在KPH中以速度移动变换并在KPH中获得变换速度

时间:2018-09-10 10:57:34

标签: c# unity3d physics

我正在对KPH Speed进行转换,并希望也能在KPH中获得它的速度(用于测试)

这是以KPH速度快速进行转换的方法。它的160马力。

 transform.Translate(Vector3.forward * 160f / 3.6f * Time.deltaTime);

在这里,是以KPH速度获取

的代码段
public double Speed;
    private Vector3 startingPosition, speedvec;

    void Start()
    {
        startingPosition = transform.position;
    }

    void FixedUpdate()
    {
        speedvec = ((transform.position - startingPosition) / Time.deltaTime);
        Speed = (int)(speedvec.magnitude) * 3.6; 

        startingPosition = transform.position;
        //text.text = Speed + "km/h";  // or mph

    }

现在有人可以告诉我问题出在哪里吗? 是我没有正确移动变换,还是以kph速度不正确?

如何在KPH中以速度移动对象并在KPH中也获得其速度。

1 个答案:

答案 0 :(得分:1)

这是做什么的? :)

speedvec = ((transform.position - startingPosition) / Time.deltaTime);

我读到:

/*distance vector from start position*/ totalDistance=(transform.position - startingPosition).magnitude

为什么呢?

/ Time.deltaTime

最后一帧的距离/时间?(deltaTime =最后一帧的执行时间)

解决方法: 如果您使用恒定速度:

speed =totalDistance/totalTime;//distance since Start()/time since Start()

如果您未使用恒定速度,则应在一帧中记录位置,并使用下一帧中的位置计算速度,这样您将拥有:

speedInThisFrame=distanceInThisFrame/Time.deltaTime;

我该怎么做:

  • 使用刚体;
  • 使用刚体的速度移动它;
  • 是一个向量,所以 rb.velocity=transform.forward*speed*Time.deltaTime; 移动对象的刚体。 //速度表示您的刚体在1秒钟内行进的距离,以m为单位。

  • 速度,以m / s为单位。 =刚体.velocity.magnitude;