Unity 이론 (Relative Rotation, Rotate Around, Look Rotation)

로젠·2024년 5월 7일
0

게임 프로그래밍

목록 보기
35/49
post-thumbnail

Relative Rotation

Relative Rotation은 상대 회전을 말하고 부모가 있을 때 자식이 부모를 상대적으로 회전하는 것을 말한다.

transform.Rotate(0, 20.0f * Time.deltaTime, 0);

Rotate Around

해당 지점을 중심으로 도는 함수이다.

transform.RotateAround(target.transform.position, Vector3.up, speed * Time.deltaTime);
Quternion q = transform.rotation;
Vector3 e = q.eulerAngles;
e.y = 0.0f;
transform.eulerAngles = e;

y값은 빼고 움직이는 코드이다.

Look Rotation

해당 대상의 방향으로 바라보는 것을 말한다.

[SerializeField]
private GameObject[] target = new GameObject[2];
private GameObject lookTarget = null;
private void Update()
{
    if (Input.GetKeyDown(KeyCode.Alpha1))
        lookTarget = target[0];
    else if (Input.GetKeyDown(KeyCode.Alpha2))
        lookTarget = target[1];
    else if (Input.GetKeyDown(KeyCode.Alpha3))
        lookTarget = null;
    if (lookTarget ==null)
    {
        transform.rotation = Quaternion.identity;
        return;
    }
    Vector3 targetPosition = lookTarget.transform.position;
    Vector3 position = transform.position;
    Vector3 direction = targetPosition - position; //타겟과 포지션의 거리
    transform.rotation = Quaternion.LookRotation(direction.normalized, Vector3.up); //회전할 전방 벡터를 준다
    Debug.DrawLine(position, position + transform.forward * direction.magnitude, Color.red);
    }

0개의 댓글