본문 바로가기
프로그래밍/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 (GameData.World.IsCameraIsometric())
            {
                Vector3 cameraRight = Camera.main.transform.right;
                Vector3 cameraForward = Vector3.Cross(Vector3.up, cameraRight).normalized;

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

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

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

댓글