最近把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存在漏帧的情况,它是基于秒的。或者准确的说是基于物理步更新

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

跑酷游戏的一些bug总结(滥用FixedUpdate的坑)的更多相关文章

  1. (译)【Unity教程】使用Unity开发Windows Phone上的横版跑酷游戏

    译者注: 目前移动设备的跨平台游戏开发引擎基本都是采用Cocos2d-x或者Unity.一般而言2d用cocos2d-x 3d用unity,但是对于Windows Phone开发者, cocos2d- ...

  2. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇:简介及目录》(附上完整工程文件)

    跑酷游戏制作 游戏类型: 此游戏Demo,为跑酷类游戏. 框架简介: 游戏通常由程序代码和资源组成.如果说模型.贴图.声音之类的可以给游戏环境提供一个物理描述和设置,那么脚本和代码块会给游戏赋予生命, ...

  3. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇05:二段跳》

    5.二段跳 二段跳概述: 基本跑酷游戏的框架搭建完毕,开发者会根据开发的游戏特性,增设一些额外功能,使游戏具有可玩性性和画面感.下面我们以角色的二段跳为例,来了解在跑酷游戏中增设其它功能的流程.二段跳 ...

  4. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇04:如何实现触控操作》

    4.如何实现触控操作 触控操作概述: 随着APPLE.Samsung.SONY等众多公司,将掌机.电脑和手机等产品在触控领域的不断探索,以触控为操作的机型越来越多的被投放到市场当中.触控游戏.触控软件 ...

  5. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》

    3.暂停游戏 暂停游戏概述: 在游戏进行时,玩家有可能会遇到多种突发事件.在跑酷游戏中突发状况的发生对游戏的影响更甚,游戏进行时玩家死亡,游戏只能从头开始,那么如果因为外界因素而影响游戏的进行,显然是 ...

  6. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇02:内购如何实现》

    2.内购如何实现 内购概述: 游戏内购是指玩家在游戏中,用金钱获取游戏道具的一种方式.开发者从玩家内购之中获得开发游戏的收益,因此大量游戏都有内购模块.下面我们以在手机IOS平台实现跑酷游戏内购为例, ...

  7. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇01:道路的自动生成》

    1.道路的自动生成 道路自动生成概述: 3D跑酷游戏的核心就是跑,在跑这一过程中增加趣味性使得游戏具有更多的可玩性.道路的自动生成和自由拼接,为游戏增设了更多的不可预见性.这种不可预见性使得玩家在游戏 ...

  8. Unity3d 跑酷游戏 之Character Controller篇

    unity3d  Character Controller @by  广州小龙 做3D跑酷游戏,也慢慢的学习了一些东西,从开发过程中积累了一些小的知识点跟大家分享一下! 1. 这个Revert按钮的意 ...

  9. 3D跑酷游戏《月影忍者之疾风狂逃》

    <月影忍者之疾风狂逃>是一款3D跑酷游戏,也是我实习的时候参与的一个项目,在那个公司我学到了很多东西,谢谢他们.大家可以去玩玩这个游戏啊,还是不错的哦.

随机推荐

  1. 第十四章 openwrt 安装 python

    需要安装libffi,python-mini,python.libffi以及python-mini需要安装在python之前     如果部分软件包不一样可以在下面的web后台搜索,搜索前先opkg ...

  2. JAVA单例MongoDB工具类

    我经常对MongoDB进行一些基础操作,将这些常用操作合并到一个工具类中,方便自己开发使用. 没用Spring Data.Morphia等框架是为了减少学习.维护成本,另外自己直接JDBC方式的话可以 ...

  3. Android系统广播机制存在漏洞,恶意软件可绕过安全机制跟踪用户

    前言 国外研究人员披露了Android漏洞(CVE-2018-9489)的信息.Android系统的内部广播机制会暴露敏感的用户和设备信息,手机上安装的应用可在用户不知情或未经许可的情况下访问获取这些 ...

  4. sqlmap的篡改绕过WAF

    space2comment.py Replaces space character (‘ ‘) with comments ‘/**/’ Example: * Input: SELECT id FRO ...

  5. django一对多 增 删 改 查

    实现一对多表查询功能 项目代码: models.py from django.db import models # Create your models here. class Classes(mod ...

  6. C#和Java交互相关研究

    之前总觉得C#和Java可以交互应用,但是由于时间以及其他方面的原因,一直没有调研.今天抽空搜了一下,终于折腾出来了. 以下是我自己就C#和Java整合的一些提问和分析,如果有不对的地方,请路过的各位 ...

  7. VS2012利用Wix打包问题

    在用VS2012打包的时候,忽然发现没有像VS2010一样可以本地打包的项目模板,于是找了N多资料后,发现现在微软在推荐用WIX打包. 在折腾WIX打包生成界面的时候,遇到了一个很纠结的问题. Unr ...

  8. java记录linux top命令信息

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  9. git:could not open a connection to your authentication agent

    git:could not open a connection to your authentication agent   错误: vagrant@homestead:~/Code/sample$ ...

  10. Python set特点

    set的特点 set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快. set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放 ...