我试图让角色在两点之间跳跃。这两个点是不同的距离,并且在不同的高度。
我使用IEnumerator中的Vector3.MoveTowards让角色从一点移动到另一点。但是,我如何修改Y轴,使角色在弯曲的路径中移动,看起来好像在跳跃?
角色需要准确降落在每个点上,所以我不能使用物理。
谢谢! : - )
额外奖励积分如果你可以调整跳跃峰值的位置(因此曲线不是完美的圆形,但更像是圆弧)例如。这样跳跃的高峰就更接近目的地了。
答案 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。