【问题标题】:Is there a way to rotate gameobject using Quaternion.LookRotation() on Y axis only?有没有办法仅在 Y 轴上使用 Quaternion.LookRotation() 旋转游戏对象?
【发布时间】:2020-04-15 12:14:09
【问题描述】:

所以,我正在开发 Unity 项目。我有一个迫击炮,它倾向于玩家游戏对象。我想旋转它,让它跟随玩家的运动。 我在我的 Update 方法中想出了这个简单的代码:

        Vector3 directionToFace = _player.position - transform.position;
        directionToFace.y = 0;
        Debug.DrawRay(transform.position, directionToFace, Color.green); // for visualization
        transform.rotation = Quaternion.LookRotation(directionToFace);

但是将 y 设置为 0 会将 x 轴的旋转上限设置为 0,但我希望我的迫击炮向前倾斜一点。我尝试将 y 设置为许多不同的值,但是两个物体之间的距离决定了迫击炮的倾斜程度。是的,我知道我可以将其设为空游戏对象的子对象并将脚本应用于父对象,但如果有任何其他方法可以在我的代码中解决此问题...您的帮助将不胜感激。

我唯一的想法是计算两个游戏对象之间的距离并相应地更改 directionToFace.y 的值。但是我必须在检查器中获得分配给迫击炮的局部旋转,然后使用勾股定理计算值......但我不想那么折磨自己:D

【问题讨论】:

  • 我不明白你的目标....I want my mortar to be leaned forward a bit 到底是什么意思?

标签: c# unity3d quaternions


【解决方案1】:

希望我能理解您的问题!我发现可以通过在代码后面添加这一行来使你的游戏对象向前倾斜

transform.rotation = Quaternion.Euler(xOffset,transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z);

其中 xOffset 是您希望游戏对象倾斜的量,也可以以类似的方式为 z 添加显式值。

如果这不是你的意思,请告诉我。

【讨论】:

  • 谢谢你!这就是我要找的!现在我将删除那些无用的空游戏对象:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
相关资源
最近更新 更多