개인과제 시작
플레이어는 정상적으로 움직이지만, 마우스 위치에 따라 스프라이트가 좌우 반전되지 않는 문제
<원인 1>: 잘못된 좌표 변환 메서드 사용
// 잘못된 예시
Vector2 mousePos = input.Get<Vector2>();
Vector2 worldPos = camera.WorldToScreenPoint(mousePos);
WorldToScreenPoint는 월드->스크린 변환용 메서드이다. 잘못 변환했기에 회전 로직이 먹히지 않았다.
<해결방법 1>
void OnLook(InputValue input)
{
Vector2 mousePos = input.Get<Vector2>();
Vector2 worldPos = (Vector2)camera.ScreenToWorldPoint(mousePos);
lookDir = (worldPos - (Vector2)transform.position).normalized;
}
원래 의도인 ScreenToWorldPoint로 수정해주었다.
<원인 2>:Update를 덮어쓰고 기능을 호출하지 않음
BaseController에 protected virtual void Update()안에 Rotate(lookDir)가 있는데 PlayerController 에서 void Update()를 다시 선언만 해 기본 동작을 덮어쓰고 base.Update()를 호출하지 않았다.
<해결방법 2>
protected override void Update()
{
base.Update(); //Rotate(lookDir) 실행
}
base.Update()를 호출해 해결하였다.
자동완성 기능을 사용했더니 잘못 사용한 걸 눈치채지 못했다. 그리고 상속받아서 사용할때도 조심해야 할 것 같다. 다음엔 이런 실수가 없도록 처음부터 꼼꼼히 봐야겠다.
내일은 개인일정으로 좀 바쁘긴 하지만 개인과제는 진짜로 해야하니 한시간이라도 꼭 작업을 하기! 나와의 약속!!!!