작성
·
293
0
void UpdateIsMoving()
{
if (State != Define.CreatureState.Moving && Dir != Define.Dir.None)
{
Vector3Int destPos = CellPos;
State = Define.CreatureState.Moving;
switch (Dir)
{
case Define.Dir.Up:
destPos += Vector3Int.up;
break;
case Define.Dir.Down:
destPos += Vector3Int.down;
break;
case Define.Dir.Left:
destPos += Vector3Int.left;
break;
case Define.Dir.Right:
destPos += Vector3Int.right;
break;
}
if (Managers.Map.CanGo(destPos))
{
if (Managers.Object.Find(destPos) == null)
CellPos = destPos;
}
}
}
void UpdatePosition()
{
if (State != Define.CreatureState.Moving) { return; }
Vector3 destPos = Managers.Map.currentGrid.CellToWorld(CellPos) + new Vector3(0.5f, 0.5f, 0);
Vector3 moveDir = destPos - transform.position;
float dist = moveDir.magnitude;
if (dist < _speed * Time.deltaTime)
{
transform.position = destPos;
State = Define.CreatureState.Idle;
}
else
{
transform.position += moveDir.normalized * _speed * Time.deltaTime;
State = Define.CreatureState.Moving;
}
}
이동할 수 없는 구역에 가려고할때 애니메이션이 IDLE과 WALK를 번갈아가면서 부들부들거립니다.
UpdateIsMoving에서 State를 Moving으로 바꾸더라도 실제 CellPos에는 적용이 안되어있다 보니 State가 곧 바로 IDLE로 바뀌기 때문인것 같은데 어떻게 해결할 수 있을까요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용과 유사한 상황에 대한 해결 방법이 담긴 질문이 있어서 링크를 공유드립니다. 해당 게시글에서는 캐릭터가 이동할 수 없는 구역에 대하여 애니메이션이 부자연스럽게 작동하는 문제와 그 해결책에 대한 논의가 이루어졌습니다. 선생님의 조언을 통해 문제를 해결할 수 있는 방법을 찾아보시길 바랍니다.
해당 게시글을 참고하여 문제의 원인을 파악하고, 적절한 수정을 통해 해결해 보시길 바랍니다.