inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Hit 판정 #1

CanGo()의 검증이 다중인 이유가 있을까요?

해결된 질문

257

mhyim

작성한 질문수 65

1

루키스님 안녕하세요?

본 강의 Hit 판정 #1에서 CanGo()로 플레이어 이동간 검증을 해주셨는데요,

GameRoom.cs의 HandleMove()에서 CanGo()를 이미 사용했는데

HandleMove()가 ApplyMove()를 호출함으로써 ApplyMove() 내에서 CanGo()를 다시 호출하고 있습니다.

코스트낭비지 않을까?하고 의문이 들어 질문 올리게 되었습니다.

//GameRoom.cs의 HandleMove()
public void HandleMove(Player player, C_Move movePacket)
{
  // ...생략
  // CanGo 호출 1
  // 다른 좌표로 이동할 경우, 갈 수 있는지 체크
  if (movePosInfo.PosX != info.PosInfo.PosX || movePosInfo.PosY != info.PosInfo.PosY)
  {
    if (_map.CanGo(new Vector2Int(movePosInfo.PosX, movePosInfo.PosY)) == false)
      return;
  }

  // ...생략
  // ApplyMove() 호출함으로써 CanGo 호출2
  _map.ApplyMove(player, new Vector2Int(movePosInfo.PosX, movePosInfo.PosY));

  // ...생략
}

//Map.cs의 ApplyMove()
public bool ApplyMove(Player player, Vector2Int dest)
{
  // ...생략
  if (CanGo(dest, true) == false)
    return false;
  // ... 생략
}

 

강의 재밌게 듣고 있습니다.

미리 답변 감사합니다.

수강자 올림.

C# unity

답변 1

1

Rookiss

이런 사소한 부분은 원하시는대로 수정하셔도 무방합니다.
2중으로 체크하는 것 같을 수 있으나
경우에 따라 ApplyMove를 단독으로 사용하는 경우 등을 대비하는 것은 늘 좋습니다.

0

mhyim

답변 감사합니다!

MessagePack

0

87

1

본인 플레이어 이동 관련 질문

0

51

1

Part7 Part9 질문이 있습니다.

0

75

1

.

0

117

1

.

0

107

2

게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제

0

92

1

타일 팔레트 깔았는데도 안돼요

0

121

2

2D로 그냥 만들어도 되나요?

0

85

2

지난 강의와 이어지는게 맞을까요?

0

83

2

순환참조 문제로 인해 발생하는 문제는 없을까요?

0

162

2

유니티 클라와 C++서버연동

0

278

2

멀티플레이 테스트 환경 관련 질문입니다

0

207

3

강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!

0

150

2

코드 관련한 몇 가지 질문입니다!

0

153

2

3d 프로젝트 이동 동기화 관련

0

323

4

파트 7 스트레스 테스트 질문 드립니다.

1

190

2

맵 이동 방식

0

134

0

맵 이동 관련해서 질문드립니다.

0

91

1

안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,

0

203

2

안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!

0

161

1

[팁] 2024년 기준 버전 이슈?

0

458

1

SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?

1

204

1

지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것

0

336

2

PushAfter 사용 질문

0

192

1