问题描述
我在统一(在 c# 中)制作了一个 andriod 漂移游戏,EVERYTINHG 在编辑器中 100% 工作,但是当我构建它并在我的 andiod 手机上测试它时,当汽车产生时,汽车尊敬,所以我做了一些调试,发现汽车启动时所有4个轮子的转数都跳到“naN”
代码:
public void Update()
{
GetInput();
HandelMotors();
HandelSteering();
UpdateWeels();
CheckDrifting();
UpdateEffects();
ChangeValues();
ChangeUI();
}
//---Alot of other code,ask if you want to get all the code---
private void HandelMotors()
{
FRWC.motorTorque = (VerticalInput * MotorForce) + (Turboing == true ? TurboBoostAmount : 0);
FLWC.motorTorque = (VerticalInput * MotorForce) + (Turboing == true ? TurboBoostAmount : 0);
FRWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
FLWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
RLWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
RRWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
}
生成时停止汽车的代码
void StopCar()
{
CarController.enabled = false;
TrailL.enabled = false;
TrailR.enabled = false;
FRWC.motorTorque = 0;
FLWC.motorTorque = 0;
RRWC.motorTorque = 0;
RLWC.motorTorque = 0;
FRWC.brakeTorque = Mathf.Infinity;
FLWC.brakeTorque = Mathf.Infinity;
RRWC.brakeTorque = Mathf.Infinity;
RLWC.brakeTorque = Mathf.Infinity;
CarRig.velocity = Vector3.zero;
CarRig.angularVelocity = Vector3.zero;
CarRig.drag = 0;
CarRig.angularDrag = 0;
Invoke("EnalbeStuff",1f);
void EnalbeStuff()
{
CarController.enabled = true;
TrailL.enabled = true;
TrailR.enabled = true;
}
}
解决方法
不要在 StopCar 函数中使用“Mathf.Infinity”,而是使用“float.MaxValue”,所以它看起来像这样:
void StopCar()
{
CarController.enabled = false;
TrailL.enabled = false;
TrailR.enabled = false;
FRWC.motorTorque = 0;
FLWC.motorTorque = 0;
RRWC.motorTorque = 0;
RLWC.motorTorque = 0;
FRWC.brakeTorque = float.MaxValue;
FLWC.brakeTorque = float.MaxValue;
RRWC.brakeTorque = float.MaxValue;
RLWC.brakeTorque = float.MaxValue;
CarRig.velocity = Vector3.zero;
CarRig.angularVelocity = Vector3.zero;
CarRig.drag = 0;
CarRig.angularDrag = 0;
Invoke("EnalbeStuff",1f);
}
void EnalbeStuff()
{
CarController.enabled = true;
TrailL.enabled = true;
TrailR.enabled = true;
}