如何解决手动更改统一的旋转
所以这是我的问题:我在 Unity 中有一个对象是我的播放器。 我希望这个玩家能够面对他移动的方向。 但我不知道如何旋转对象,直到释放特定键然后将旋转重新定位到 0,0
我试过这个代码
public class PlayerAction : MonoBehaviour
{
public float horizontalInput;
public float verticalInput;
// Start is called before the first frame update
void Start()
}
// Update is called once per frame
void Update()
{
horizontalInput = Input.GetAxis("Horizontal");
verticalInput = Input.GetAxis("Vertical");
if (horizontalInput > 0)
{
transform.Rotate(0,90,0);
}
}
}
我正在查看 Quaternion,但在任何论坛上都看不懂。
澄清我想手动更改播放器的旋转
解决方法
找到这个例子,你可以围绕 y 轴旋转到每一边,然后分别重置回原来的旋转。
using UnityEngine;
public class Rotation : MonoBehaviour {
private Quaternion startingRot;
void Start() {
startingRot = transform.rotation;
}
void Update() {
if (Input.GetKeyDown(KeyCode.P)) {
transform.Rotate(0,45,0);
}
if (Input.GetKeyDown(KeyCode.O)) {
transform.Rotate(0,-45,0);
}
if (Input.GetKeyUp(KeyCode.L)) {
transform.rotation = startingRot;
}
}
}
四元数是处理旋转的数学工具。它们远不如 eulerAngles 直观,但计算效率更高,并且解决了 eulerAngles 的一个已知问题,即 Gimbal lock。
您暂时无需担心这一点,只需为您的信息担心:
Unity 提供了与在编辑器中相同的代码中使用欧拉角与旋转进行交互的方式,但旋转是通过四元数处理的。这就是为什么很多时候你会在 unity 的编辑器变换旋转窗口中发现一些意想不到的值,因为 unity 会永久地从它内部处理的四元数转换为编辑器用户界面中显示的欧拉角。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。