Unity2D:旋转物体保持向前看

Unity2D: Rotate object keeping looking at front

我正在尝试归档 Z 轴旋转运动 围绕移动对象 始终保持 "looking at front" 但没有成功。所以它应该是这样的:

我得到的最接近的是:

transform.RotateAround(targetPosition, Vector3.forward, moveSpeed);

但它不会一直寻找 "at front"。

有人可以帮助我吗?

提前致谢。

此致。

Fitst 存储当前旋转,然后围绕点旋转,最后应用之前的旋转。

var rot = transform.rotation;
transform.RotateAround(targetPosition, Vector3.forward, moveSpeed);
transform.rotation = rot;

一个简单的解决方案就是操纵实际坐标并忽略旋转^^ 如果一个对象移动并且您希望它继续围绕它旋转,只需将它设为子对象即可。

这是我们围绕 Y 旋转的 3d 解决方案:

  void Start() { angle = 0.0f }

  void Update() {
       angle += speed * Time.deltaTime; //Your starting angle that will be modified every frame
       CheckAngle(ref angle);

       float x = Mathf.Cos(angle * Mathf.Deg2Rad) * Radius;
       float z = Mathf.Sin(angle * Mathf.Deg2Rad) * Radius;
    }

    static void CheckAngle(ref float Angle) //It should probably return a value by it's name here tho not ref, not sure which is the correct way of doing this
    {
       if (Angle > 360) //You don't want your angle to go past the boundaries of an INT
           Angle = 0;
    }

如果您的对象 ("Lightning Bolt") 没有世界旋转,即像您的示例图像所暗示的那样与世界轴对齐,那么最简单的方法就是将世界旋转简单地设置为四元数身份:

    transform.rotation = Quaternion.identity;

请注意,如果其父对象旋转,图像将不会旋转。它基本上 "Billboard" 你的闪电对象。如果你想让你的闪电与父对象对齐,然后尝试这样的事情:

    transform.rotation = transform.parent.rotation;