• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

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

24.02.14 00:05 작성 조회수 101

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;
  // ... 생략
}

 

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

미리 답변 감사합니다.

수강자 올림.

답변 1

답변을 작성해보세요.

1

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

mhyim님의 프로필

mhyim

질문자

2024.02.14

답변 감사합니다!