본문 바로가기
프로그래밍/Unity

Unity - 카메라 기반 8 방향 이동

by neive 2023. 5. 14.
728x90

 

예제

var moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));

// 움직임이 있을 때만 이동 처리
if (moveDirection != Vector3.zero)
{
    if (카메라 방향 이용시)
    {
        var cameraRight = Camera.main.transform.right;
        var cameraForward = Vector3.Cross(Vector3.up, cameraRight).normalized;

        if (moveDirection.z != 0)	// 상하 이동 방향이 반대일 때 보정
            cameraForward = -cameraForward;
                
        moveDirection = cameraRight * moveDirection.x + cameraForward * moveDirection.z;
    }

    // 이동 방향 설정
    navAgent.Move(moveDirection.normalized * moveSpeed * Time.deltaTime);

    // 이동 방향으로 회전
    transform.rotation = Quaternion.LookRotation(moveDirection);
}
728x90

댓글