Deff_Dev
[Unity/C#] Character Collider 이슈 본문
public void StartNewStage()
{
// 위치 설정
transform.position = GameManager.Instance.StageManager.StartWaypoint.position;
stateMachine.ChangeState(stateMachine.ChasingState);
}
게임을 시작하면 플레이어가 지정한 위치에서 시작하는 기능을 만들 때, 위와 같이 코드를 작성했다.
하지만 테스트를 해보니 플레이어가 해당 위치로 돌아가지 않았다.
한 프레임 당 실행을 했을 땐, 제대로 위치가 설정 됐지만 그냥 실행할 때는 시작 위치로 갔다가 다시 현재 위치로 돌아오는 이슈가 발생했다.
시작위치로 이동했다가 다시 돌아가는 이슈이므로 위의 코드는 문제가 없었다.
Debug를 찍어보며 찾아보니 Character Controller에서 문제가 발생한 것을 확인했다.
위치를 설정하고 플레이어가 움직이는 과정에서 Character Controller가 문제가 발생했다고 생각해 시작 위치를 설정할 때, 컴포넌트를 잠깐 껐다가 키는 방법으로 수정했다.
public void StartNewStage()
{
SetPlayerPosition();
stateMachine.ChangeState(stateMachine.ChasingState);
}
private void SetPlayerPosition() // 캐릭터 컨트롤러 이슈로 인한 강제이동 ?
{
Controller.enabled = false;
transform.position = GameManager.Instance.StageManager.StartWaypoint.position;
Controller.enabled = true;
}
코드를 위와 같이 수정했더니 시작 위치에서 제대로 시작하는 것을 확인할 수 있었다.
때로는 직관적인 방법이 정답인 경우가 있는 것 같다.
'Unity(유니티) > 유니티 공부' 카테고리의 다른 글
[Unity/C#] HashSet를 이용한 중복 제거 (0) | 2024.06.21 |
---|---|
[Unity/C#] 오일러(Euler) 회전 이슈 (0) | 2024.06.20 |
[Unity/C#] 동적 생성 (2) | 2024.06.14 |
[Unity/C#] 파이프라인, URP (2) | 2024.06.13 |
[Unity/C#] Func (0) | 2024.06.12 |