在Unity3d中,如何计算出在特定时间行驶距离所需的速度,炮弹与Sin()

时间:2017-10-14 15:51:10

标签: c# unity3d pi sin

我在没有刚体的情况下以炮弹模式移动物体,没有addforce。我需要弄清楚炮弹在合适的时间到达目的地的速度有多快。

到目前为止我的代码:

moveTimer += Time.deltaTime * ballSpeed;
Vector3 currentPos = Vector3.Lerp(startPos, endPos, moveTimer);
currentPos.y += height * Mathf.Sin(Mathf.Clamp01(moveTimer) * Mathf.PI);
this.transform.position = currentPos;

我知道通过增加'ballSpeed',炮弹将遵循相同的曲线但速度更快。假设我想在10秒钟内到达endPos,我该如何计算所需的ballSpeed?

提前致谢!

1 个答案:

答案 0 :(得分:2)

ballSpeed = 1f / 10f; // duration 10s
...
moveTimer += Time.deltaTime * ballSpeed;
Vector3 currentPos = Vector3.Lerp(startPos, endPos, moveTimer);
currentPos.y += height * Mathf.Sin(Mathf.Clamp01(moveTimer) * Mathf.PI);
this.transform.position = currentPos;