gpt4 book ai didi

c# - transform.lookat 问题(C# Unity3D)

转载 作者:行者123 更新时间:2023-11-30 22:22:44 24 4
gpt4 key购买 nike

我一直在研究如何让一个物体像另一个物体上的轨道一样旋转。

if (Spin == true)  
{
transform.LookAt(ParentOrb.transform);
transform.Rotate(90,0,0);
transform.Translate(transform.forward*Time.deltaTime*5,Space.World);
}

但是,一旦该物体本应围绕另一个物体旋转,当它到达世界 y 值 0(直接在下方/上方)时,它就会开始疯狂地旋转。

我确实将 lookat 的第二个参数更改为 vector.3.up、transform.up 和 vector3.zero。

当我有 vector3.up 时,旋转也是同样的问题。
当我有 transform.up 它开始围绕自己旋转。
当我有 vector3.zero 时,它确实开始围绕自身旋转,但它与实际的球体无关,而是它自己的轨道。

我希望能够让它在一个完整的周期内围绕母体运行。

感谢阅读我的问题。

最佳答案

恭喜,你可能刚刚遇到了Gimbal Lock !

关于 Unity3D 框架的光荣之处在于,通常有一个现有的方法来解决您的问题。在这种情况下有 Transform.RotateAround .

此代码的功能应该更接近您最初的预期:

transform.RotateAround(ParentOrb.transform.position, Vector3.back, 40f * Time.deltaTime);

其中 40f 是每秒的任意预期旋转速度(以度为单位)。

关于c# - transform.lookat 问题(C# Unity3D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702435/

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