문제 아바타 움직임이 이상함
1. 문제점 파악
- 현재상태
- 어느키를 누르든 휘는 모양으로 스스로 돌아버리면서 움직임

가는방향을 보는게 이상함
private void LookAtDestination()
{
Vector3 dir = moveDest - transform.position;
float yawAngle = Mathf.Atan2(dir.z, dir.x);
yawAngle *= Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, -(yawAngle - 90f), 0f);
}
- 원인
LookAtDestination() 는 moveDest의 방향이 어디인지 받고 써야하는것임

Update에 그냥 함수를 넣게된다면 Y값이 그냥 들어가버림
2. 해결하기
- 목적지 정하기
private void LookAtMouse()
{
//내 위치를 스크린으로
1. Vector3 worldToScreen = Camera.main.WorldToScreenPoint(transform.position);
2. Vector3 mousePos = Input.mousePosition;
3. Vector3 dir = mousePos - worldToScreen;
4. float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
5. transform.rotation =
Quaternion.Euler(0f, -(angle - 90f), 0f);
}
1, 2 - 내위치를 스크린으로 보낸 위치 벡터와 마우스위치벡터 만들기
3 - 방향 벡터 구하기
4 - 각도 구하기 역탄젠트 공식은 y/x, x는 밑변, y는 높이라 가정 하고 Atan2에는 높이 밑변을 각각 전달(Atan에는 높이/밑변의 비율을 인자로 전달하고 끝)

3. 알게된 점
방향의 각도를 알기 위해서는 목적지 방향 벡터가 필요하다.
4. 의문스러운점
dir.z가 아니라 왜 dir.y일까?
참고한 블로그
https://coder-bok.tistory.com/58
https://hustlehustle.tistory.com/19
'유니티' 카테고리의 다른 글
| [유니티] Nev Mesh로 움직이기 (0) | 2025.05.07 |
|---|---|
| [유니티] 내비메시에서 목적지 찾기 RayCast, samplePosition,agent (1) | 2025.05.07 |
| [유니티] NavMesh (0) | 2025.05.02 |
| [유니티] 움직임 override Layer, 블렌더 사용 (0) | 2025.05.01 |
| [유니티] animaiton & asset (0) | 2025.04.30 |