-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
선생님처럼 이동못할때도 정상적으로 애니메이션이 작동을 안합니다
23.12.23 23:50 작성 조회수 164
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로 바뀌기 때문인것 같은데 어떻게 해결할 수 있을까요?
답변을 작성해보세요.
0
Rookiss
지식공유자2023.12.25
안녕하세요,
위 코드만 보고는 어느 부분인 강의 코드와 다른지는 알기가 힘듭니다.
원본 코드랑 비교해보시는 방법 밖에는 없을 것 같네요 :(
0
인프런 AI 인턴
2023.12.23
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용과 유사한 상황에 대한 해결 방법이 담긴 질문이 있어서 링크를 공유드립니다. 해당 게시글에서는 캐릭터가 이동할 수 없는 구역에 대하여 애니메이션이 부자연스럽게 작동하는 문제와 그 해결책에 대한 논의가 이루어졌습니다. 선생님의 조언을 통해 문제를 해결할 수 있는 방법을 찾아보시길 바랍니다.
해당 게시글을 참고하여 문제의 원인을 파악하고, 적절한 수정을 통해 해결해 보시길 바랍니다.
답변 2