人物跳弧?在Vector3.MoveTowards期间改变Y轴?

时间:2018-03-27 03:08:30

标签: unity3d

我试图让角色在两点之间跳跃。这两个点是不同的距离,并且在不同的高度。

我使用IEnumerator中的Vector3.MoveTowards让角色从一点移动到另一点。但是,我如何修改Y轴,使角色在弯曲的路径中移动,看起来好像在跳跃?

角色需要准确降落在每个点上,所以我不能使用物理。

谢谢! : - )

Image Example

额外奖励积分如果你可以调整跳跃峰值的位置(因此曲线不是完美的圆形,但更像是圆弧)例如。这样跳跃的高峰就更接近目的地了。

1 个答案:

答案 0 :(得分:1)

观察你给出的图像,我建议使用射弹运动方程计算给定时间内源和目的地之间的路径,给定的起始速度(Vo)和给出角度(θ) 如果您不熟悉弹丸方程,请看这里: https://en.wikipedia.org/wiki/Projectile_motion
Displacement 部分中,您会找到2个这样的等式:
x = Vo * T * cos(theta)
y = Vo * T * sin(θ)-0.5 * g * pow(T,2)
因此,在Update函数中,不要将对象直接移向目标,而是沿着射弹运动拍摄临时目标,您可以使用上述两个方程进行计算。然后你可以使用,

Vector3.MoveTowards(curPosition,new Vector3(x,y,0),step);

考虑到,z值为0。