인프런 커뮤니티 질문&답변

gamecoding님의 프로필 이미지
gamecoding

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

평타 스킬

충돌처리 질문

작성

·

471

0

안녕하세요 강사님 강사님 강의를 듣고 IOCP서버와 유니티 클라이언트로 3D rpg게임을 제작하고 있습니다.

충돌처리 같은경우 유니티에서 제공하는 boxcollider를 써서 충돌처리를 구현하는 방법을 사용해도 되나요?

답변 2

0

gamecoding님의 프로필 이미지
gamecoding
질문자

아 이해했습니다 감사합니다 !

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

그러면 서버에서는 알 길이 없으니, 동기화에 애를 먹을 수 있습니다.
보통 3d mmo 게임에선 충돌이 없고,
그나마 충돌이 있다면 리니지 같은 타일 방식에서나 가능합니다.

gamecoding님의 프로필 이미지
gamecoding
질문자

맵의 정보를

예를 들어 2차원 행렬로 0 : 빈 공간 1 : 바닥 2 : 장애물 3 : 플레이어 4 : 몬스터 와같은 형태로 저장해 두고

0 0 0 0 0 0 0

1 1 1 1 1 1 0

1 1 3 1 1 2 1

0 1 1 1 1 1 0

맵의 형태를 서버에서 저장해두고

플레이어가 서버에 들어왔을때 플레이어의 좌표를(player.pos = map(1, 2); // map[1][2]의 좌표를 뱉어주는 함수)

저장해두고 플레이어가 이동 패킷을 보내게 되면 if(map[2][2] == 1) 이면 이동을 시켜주고 그외의 경우 이동을 안시켜주는 형식

2d게임 구현했을때 저런 2차원 배열 형태로 맵의 정보를 저장해두고 충돌처리를 구현했었는데 3d게임에서도 이러한 방법으로 충돌처리 구현을 하나요?

Rookiss님의 프로필 이미지
Rookiss
지식공유자

리니지 류의 게임들은 유심히 보면 3d 게임임에도 '칸' 단위로 플레이어가 움직입니다.
그러나 2d게임처럼 정말 2차원 배열 형태의 그리드를 관리하는 것이죠.

테라 같은 3d 게임은 유닛 간 충돌이 없습니다.
그러니 스킬 판정 등은 주기적으로 수학 계산을 통해서 하는 것이죠.

gamecoding님의 프로필 이미지
gamecoding

작성한 질문수

질문하기