유니티 - 바라보는 방향으로 전진 시키기 (회전값 * Vector3.forward)

반응형

 

 

 

Unity에서 “바라보는 방향으로 이동” 하기

“객체가 바라보는 방향으로, 일정한 속도로 이동시키는 원리와 공식”

 

[개념 1] 객체가 바라보는 방향을 구하려면?

👉 rotation * Vector3.forward 사용

Vector3 forwardDir = transform.rotation * Vector3.forward;
  • transform.rotation: 현재 회전값 (Quaternion)
  • Vector3.forward: 월드 기준 Z+ 방향
  • 둘을 곱하면 → 현재 회전 상태에서의 ‘앞 방향’

 

📌 추가 예시: 특정 각도 기준 회전 방향 만들기

Vector3 dir = Quaternion.Euler(0, angle, 0) * Vector3.forward;
angle  결과 방향 벡터 의미
0 (0, 0, 1) 정면 (Z+)
90 (1, 0, 0) 오른쪽 (X+)
45 (0.707, 0, 0.707) 오른앞 대각선

이처럼 회전값을 직접 만들어 곱해도 같은 원리로 회전된 방향을 구할 수 있음

[개념 2] 전방 방향으로 실제 이동시키려면?

👉 전방 방향 벡터에 속도를 곱해 위치에 더하기

transform.position += forwardDir * speed * Time.deltaTime;
  • forwardDir: 앞 방향 벡터
  • speed: 초당 이동 거리
  • Time.deltaTime: 프레임 보정
  • 결과: 실제로 이동

[개념 3] 왜 곱해야 하나?

👉 객체가 회전했을 때 forward 방향이 달라지기 때문

Y 회전값 회전 * Vector3.forward 결과  의미
0 (0, 0, 1) 정면 (Z+)
90 (1, 0, 0) 오른쪽 (X+)
180 (0, 0, -1) 뒤쪽 (Z−)
270 (−1, 0, 0) 왼쪽 (X−)

 

→ 회전이 바뀌면 forward도 달라짐 → 곱해서 구해야 정확

 

[개념 4] 정규화된 방향과 속도를 곱해 "속도 벡터" 만들기

🔹 4-1. 방향 구하기

Vector3 dir = Quaternion.Euler(0, angle, 0) * Vector3.forward;
  • 구한 것: 이동 방향
  • 예시 (angle = 45도): dir ≈ (0.707, 0, 0.707)
    → 오른앞 대각선 방향

🔹 4-2. 방향 정규화

Vector3 normalizedDir = dir.normalized;
  • 구한 것: 크기 1짜리 단위 방향 벡터
  • 예시:normalizedDir ≈ (0.707, 0, 0.707)
    → 이미 단위 벡터이므로 변화 없음

🔹 4-3. 속도 벡터 만들기

Vector3 velocity = normalizedDir * speed;
  • 구한 것: 속도 벡터 (방향 + 속도 포함)
  • 예시 (speed = 5): velocity ≈ (3.535, 0, 3.535)
    → 초당 5m 속도로 이동할 방향성 포함 벡터

🔹 4-4. 위치 갱신

transform.position += velocity * Time.deltaTime;
  • 구한 것: 이번 프레임에서 이동할 거리
  • 예시 (deltaTime = 0.016): (3.535, 0, 3.535) * 0.016 ≈ (0.05656, 0, 0.05656)
    → 이번 프레임에서 약 5.6cm 이동

요약표

단계 계산식 구하는 것 예시 결과

① 방향 Quaternion.Euler(0, angle, 0) * Vector3.forward 이동 방향 (0.707, 0, 0.707)
② 정규화 dir.normalized 단위 방향 벡터 (0.707, 0, 0.707)
③ 속도 벡터 normalizedDir * speed 방향 + 속도 (3.535, 0, 3.535)
④ 이동 거리 velocity * Time.deltaTime 이번 프레임 이동 거리 (0.056, 0, 0.056)

 

반응형