unity3d 统一方法中的一个螺旋运动的对象

ep6jt1vc  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(148)

在Unity中,我可以使用简单的

transform.RotateAround(GameObject.Find("CubeTest").transform.position, Vector3.up, 20000*Time.deltaTime);

然而,我希望以圆周运动的物体在轨道上接近这个物体。不完全确定如何做到这一点而不搞砸。

mrfwxfqh

mrfwxfqh1#

GameObject cube = GameObject.Find("CubeTest");    
transform.LookAt(cube.transform);
transform.Translate(transform.forward * Time.deltaTime * approachSpeed);
transform.RotateAround(cube.transform.position, Vector3.up,20000*Time.deltaTime);

我想那能如你所愿吗?它逐渐向旋转点移动,然后旋转,给人一种恶化轨道的感觉。

r7s23pms

r7s23pms2#

如果你来这里寻找工作的2D解决方案,你在这里。
this blog post .我构建了以下可配置脚本:

public class SpiralMovement : MonoBehaviour
{
    [SerializeField] Transform moveable;
    [SerializeField] public Transform destiny;
    [SerializeField] float speed;
    
    // As higher as smoother approach, but it can not be more than 90, or it will start getting away.
    [SerializeField][Range(0f, 89f)] float angle = 60f;

    void Update()
    {
        Vector3 direction = destiny.position - moveable.position;
        direction = Quaternion.Euler(0, 0, angle) * direction;
        float distanceThisFrame = speed * Time.deltaTime;

        moveable.transform.Translate(direction.normalized * distanceThisFrame, Space.World);
    }
}

相关问题