• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

충돌처리 질문

23.02.21 00:56 작성 조회수 357

0

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

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

답변 2

·

답변을 작성해보세요.

0

gamecoding님의 프로필

gamecoding

질문자

2023.02.21

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

0

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

gamecoding님의 프로필

gamecoding

질문자

2023.02.21

맵의 정보를

예를 들어 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게임에서도 이러한 방법으로 충돌처리 구현을 하나요?

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

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