我想制作一个随鼠标旋转的第一人称相机。
我查看了Input.GetAxis Scripting API页面,并找到了示例代码,该代码已包含在文章的底部。试用后,我意识到,尽管它具有与希望的基本功能相同的功能,但它并不能使相机与xz平面平行,尤其是在圈动鼠标时。片刻之后,相机将处于一个奇怪的角度,并且播放器将完全被破坏!
是否有此代码的快速修复程序会以某种方式限制相机的移动,或者是否有更好的旋转相机的方法?
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public float horizontalSpeed = 2.0F;
public float verticalSpeed = 2.0F;
void Update() {
float h = horizontalSpeed * Input.GetAxis("Mouse X");
float v = verticalSpeed * Input.GetAxis("Mouse Y");
transform.Rotate(v, h, 0);
}
}
您正在经历的声音听起来像万向节锁定。当您使用欧拉角旋转时会发生这种情况。我必须做一些测试才能提供解决方案。基本上,您需要使用四元数。他们没有遭受万向节锁定的困扰。
—
模糊逻辑
如何使用四元数进行旋转?我尝试了transform.rotation = Quaternion.Slerp(-Input.GetAxis(“ Mouse X”),Input.GetAxis(“ Mouse X”),Time.deltaTime * freeLookTurningSpeed); ,但这给了我错误。
—
reincarnationofstackexchange
好吧,我做了一个测试。幸运的是,这不是万向节锁。我将发布解决方案作为您的答案。
—
模糊逻辑