작성
·
187
1
안녕하세요, 선생님.
애청하는 학생 중하나입니다.
다시한번 정주행중인데.. 수정하였으면 하는 부분이 하나 생겨 문의를 드려봅니다. 아래 부분에서
ApplyLeave(gameObject); 는 목적지에 갈수 있는지 체크한 이후에 넣는게 맞지 않나 생각이듭니다!
- 몬스터가 플레이어를 쫓다가 막혔을때 (물론 막히면 다른데로 갈수도있으나 그러지 않은 상황이 지금단계에서는 생기더라구요. )
ApplyLeave는 계속 하고 있으나, return이 되어 게임상 _object list에는 저장이 되지 않고 있는 상황이 생겨서용..
별거 아니지만.. 테스트중 오류가 발견되어 코멘트 남겨봅니다! 늘 감사하게 강의 듣고있습니다. 감사합니다.
=> AS-IS
public bool ApplyMove(GameObject gameObject, Vector2Int dest)
{
ApplyLeave(gameObject);
// 예외를 처리한다.
if (gameObject.Room == null)
return false;
if (gameObject.Room.Map != this)
return false;
// 목적지에 갈 수 있는지 체크
if (CanGo(dest, true) == false)
return false;
PositionInfo posInfo = gameObject.Info.PosInfo;
// 목적지에 나를 텔레포트 시킴
{
int x = dest.x - MinX;
int y = MaxY - dest.y;
_objects[y, x] = gameObject;
}
=> TO-BE
public bool ApplyMove(GameObject gameObject, Vector2Int dest)
{
// 예외를 처리한다.
if (gameObject.Room == null)
return false;
if (gameObject.Room.Map != this)
return false;
// 목적지에 갈 수 있는지 체크
if (CanGo(dest, true) == false)
return false;
// (순서조정) 나의 위치 체크와, 공간에서 사라지게 하고 하는게 다 ApplyLeave에 들어가있다.
ApplyLeave(gameObject);
PositionInfo posInfo = gameObject.Info.PosInfo;
// 목적지에 나를 텔레포트 시킴
{
int x = dest.x - MinX;
int y = MaxY - dest.y;
_objects[y, x] = gameObject;
}
// 실제 좌표 이동 | 사실 왜 바꿔주는지는 아직 모르겠음 return도 안하는데
posInfo.PosX = dest.x;
posInfo.PosY = dest.y;
return true;
}