我正在对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中也获得其速度。
答案 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;