如何改变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 轴上的旋转中心以创建垂直弧。
希望对您有所帮助 ;)
就我对 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 轴上的旋转中心以创建垂直弧。
希望对您有所帮助 ;)