unity3d - Quaternion.Euler 和 transform.Translate
问题描述
我正在尝试创建一个简单的游戏对象,您可以使用键盘移动和旋转它。它现在运行良好,但我唯一的问题是它一直在旋转对象的 X。我想将它锁定在某个位置,但仍然能够旋转游戏对象。我尝试通过 RigidBody 锁定,但没有成功。
我也尝试了 Quanternion.Euler,但后来发生了一个奇怪的错误。当我尝试向上移动 Z=90 和 Y=-90 上的旋转锁时,当我尝试向下移动旋转锁到 Z=-90 和 Y=90 时。仅当我尝试通过 Quanternion.Euler 将 X 更改为 -90 时才会发生这种情况。我的猜测是这个错误与 Transform.Translate 有关,我用来移动我的游戏对象并使其旋转的函数。
这是我的代码:
transform.Translate(speed * Time.deltaTime, angularSpeed*Time.deltaTime, 0, Space.Self);
transform.rotation = Quaternion.Euler(-90f, transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z);
if (Input.GetKey(KeyCode.W))
{
transform.Rotate(0, 1, 0);
}
if (Input.GetKey(KeyCode.S))
{
transform.Rotate(0,-1, 0);
}
if (Input.GetKey(KeyCode.D))
{
transform.Rotate(0,0, 0.2f);
angularSpeed =-20;
}
if (Input.GetKey(KeyCode.A))
{
transform.Rotate(0, 0, -0.2f);
angularSpeed =20;
}
解决方案
推荐阅读
- react-native - 解析失败 [TypeError: Network request failed] Expo, react-native
- python - 查询效率mongodb
- python - 如何使用字符串访问变量?
- javascript - 如何在componentDidMount中同时运行两个函数
- sql - 如何修复“表达式中未定义的函数‘xxx’”(SQL 查询中的 Excel 函数)
- java - Spring reactor:如何按键等待多个 Flux?
- c# - 通过 OpenSSL 从 BouncyCastle 的加密字符串中解密字符串的问题
- laravel - 有没有办法让ckeditor的输出图像响应?
- delphi - 检测窗口最小化状态的最佳选择?
- flutter - 多选复选框的颤振问题 - 来自 Firestore 的数据