车轮对撞机 rpm 跳跃 naN

Posted

技术标签:

【中文标题】车轮对撞机 rpm 跳跃 naN【英文标题】:Wheel colliders rpm jumps naN 【发布时间】:2021-04-04 10:50:53 【问题描述】:

我正在统一制作一个安卓漂移游戏(在 c# 中),EVERYTINHG 在编辑器中 100% 工作,但是当我构建它并在我的安卓手机上测试它时,当汽车产生时,汽车会受到尊敬,所以我做了一些调试发现,汽车启动时,四轮驱动器的转速都跳到“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;
    
    

【问题讨论】:

【参考方案1】:

不要在 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;

【讨论】:

以上是关于车轮对撞机 rpm 跳跃 naN的主要内容,如果未能解决你的问题,请参考以下文章

Unity中角色跳跃时如何禁用重力?

Unity 中某些动画期间平滑过渡和碰撞的动画

luoguP1871 对撞机赛后第一题

仅在 Safari 中显示“Infinity:NanNan”的音轨持续时间

如何防止刚体穿过其他对撞机

如何让玩家在碰到对撞机时停止移动? [关闭]