zoukankan      html  css  js  c++  java
  • 跑酷游戏的一些bug总结(滥用FixedUpdate的坑)

    最近把1年前的跑酷游戏demo拿出来重做了一遍,解决了2个之前的遗留bug。

    虽然罪魁祸首都是FixedUpdate,但细节又不太一样。这里记录一下

    1.点击空格键,角色会跳跃。而有时会跳的比之前高很多(使用Rigidbody.AddForce)

    解决:

    AddForce之前应该清一下速率,因为是射线检测是否碰到地面,而跳跃后不会立刻离地。

    如果不清,后面几帧会累加AddForce

    清除速率保证离地的一瞬间肯定是正常Force,而非累加Force

    2.有时候接收不到键盘按下的事件

    解决:

    这个比较奇葩,原因是输入检测写在FixedUpdate里:

    void FixedUpdate()
    {
        if (Input.GetKeyDown(jumpKey))
        {
            //Magic Bug
        }
    }

    但用GetKey,检测是否处于长按状态又正常

    void FixedUpdate()
    {
        if (Input.GetKey(jumpKey))
        {
            //Great
        }
    }

    当然,最终解决方法是放到Update里去处理,漏检率0。

    void Update()
    {
        if (Input.GetKeyDown(jumpKey))
        {
            //Great
        }
    }

    因为FixedUpdate存在漏帧的情况,它是基于秒的。或者准确的说是基于物理步更新

    放在物理步的函数中处理本身就是错误的做法

  • 相关阅读:
    心情记录&考试总结 3.30
    BZOJ 1982 Moving Pebbles
    BZOJ 3759 Hungergame
    51Nod 算法马拉松12 Rikka with sequences
    51Nod 算法马拉松12 移数博弈
    BZOJ 3720 gty的妹子树
    BZOJ 4184 shallot
    BZOJ 3160 万径人踪灭
    好好学习天天向上
    java解析json字符串
  • 原文地址:https://www.cnblogs.com/hont/p/5184802.html
Copyright © 2011-2022 走看看