通过 C# 在 Unity 3D 中实现速度



我目前正在用 Unity 制作一款 3D 网球游戏。当用户击球时,比如说在x=0,y=5,z=0,速度在某个位置,比如z=10,达到z=10后球x和y坐标是多少?

要获得球的速度,您必须使用球的刚体。

如果您的脚本作为球的组件附加,您将通过 rigidbody.velocity.magnitude 访问它。

尽管 Heilo 的方法可以完美运行,但我强调获得直接速度测量的想法,例如距离/时间,时间是 Update() 方法更新期间的帧。

这实际上非常简单...

只需获取它在两个更新函数之间行进的距离,如下所示:

var previousPosition : Vector3;
function Update() {
    //Get the difference/distance between the previous position and the current position
    var velocity = Vector3.Distance(previousPosition, transform.position);
}

因为我在单个帧上执行此操作,所以无需计算额外的数学运算来获得速度。但是,如果你想在第二秒内完成它,你需要获得游戏的FPS并用它做一些数学运算。所以我建议,除非你想使用这条直接路线,否则请使用Heilo的建议。