gpt4 book ai didi

c# - 为什么Unity3D中相机绕z轴旋转?

转载 作者:行者123 更新时间:2023-11-30 21:46:03 26 4
gpt4 key购买 nike

我在 Unity3D 中有一个主摄像头,我想根据鼠标输入来旋转它,因此它可以作为第一人称视频游戏,您可以根据您想要看的位置来移动鼠标在。

相机的起始值(Unity 中“检查器”选项卡中的“变换”选项卡)为:

  1. 位置:X = -1,Y = 1,Z = -11。
  2. 旋转:X = 0、Y = 0、Z = 0。
  3. 比例:X = 1、Y = 1、Z = 1。

我为主摄像机添加了一个脚本组件。它是以下类:

using UnityEngine;
using System.Collections;

public class CameraMove : MonoBehaviour {

float deltaRotation = 50f;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

if(Input.GetAxis("Mouse X") < 0){
//Code for action on mouse moving left
transform.Rotate (new Vector3 (0f, -deltaRotation, 0f) * Time.deltaTime);
}
else if(Input.GetAxis("Mouse X") > 0){
//Code for action on mouse moving right
transform.Rotate (new Vector3 (0f, deltaRotation, 0f) * Time.deltaTime);
}

if(Input.GetAxis("Mouse Y") < 0){
//Code for action on mouse moving left
transform.Rotate (new Vector3 (deltaRotation, 0f, 0f) * Time.deltaTime);
}
else if(Input.GetAxis("Mouse Y") > 0){
//Code for action on mouse moving right
transform.Rotate (new Vector3 (-deltaRotation, 0f, 0f) * Time.deltaTime);
}
}
}

但是,当我播放场景时,相机没有按应有的方式旋转。 旋转值在 x 轴、y 轴甚至 z 轴上发生变化。

我做错了什么?

最佳答案

这是如何计算四元数的问题。当修改多个轴时会发生这种情况。如果您注释所有 x 旋转或 y 旋转,并且一次仅在一个轴上旋转,您将意识到这个问题将会消失。

要使用鼠标输入正确旋转相机,请使用 eulerAngleslocalEulerAngles 变量。这两者之间的选择取决于您正在做什么。

public float xMoveThreshold = 1000.0f;
public float yMoveThreshold = 1000.0f;

public float yMaxLimit = 45.0f;
public float yMinLimit = -45.0f;


float yRotCounter = 0.0f;
float xRotCounter = 0.0f;


// Update is called once per frame
void Update()
{
xRotCounter += Input.GetAxis("Mouse X") * xMoveThreshold * Time.deltaTime;
yRotCounter += Input.GetAxis("Mouse Y") * yMoveThreshold * Time.deltaTime;
yRotCounter = Mathf.Clamp(yRotCounter, yMinLimit, yMaxLimit);
transform.localEulerAngles = new Vector3(-yRotCounter, xRotCounter, 0);
}

关于c# - 为什么Unity3D中相机绕z轴旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com