如何改变Vector3.Slerp旋转的平面?

How to change the plane that Vector3.Slerp rotates on?

就我对 Slerp 的理解而言,在我的情况下,这是我应该使用 Vector3.Slerp 函数的方式。我想从点 start 发射一个球体到点 target 并围绕 middle.

旋转
using UnityEngine;

public class Projectile : MonoBehaviour
{
    public Vector3 start;
    public Vector3 target;
    public Vector3 middle;

    public float flyTime;
    float launchTime;

    void Start()
    {
        launchTime = Time.time;
    }

    void Update()
    {
        float percentage = (Time.time - launchTime) / flyTime;
        transform.position = Vector3.Slerp(start - middle, target - middle, percentage) + middle;
    }
}

事实是,对象将沿着中间的上轴旋转,而不是像我在 YouTube 上看到的教程中看到的那样沿着右轴旋转。

这是预期的轨迹:

这就是我的代码遵循的轨迹:

按照下面的 SLeep documentation 示例,您必须稍微偏移 Y 轴上的旋转中心以创建垂直弧。

希望对您有所帮助 ;)