跑酷游戏的一些bug总结(滥用FixedUpdate的坑)
近期将之前的跑酷游戏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存在漏帧的情况,它是基于秒的。或者准确的说是基于物理步更新
放在物理步的函数中处理本身就是错误的做法
标签:
UnityRigidbody
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理