前言:

前天给游戏里面增加了一个 sensor 类型的fixture,

这个 fixture 主要用来处理碰撞,说的具体一点,用来处理浮力。

不知道别人是怎么做浮力的,我之前也没什么经验,又一次在和伙计讨论爆炸效果的时候,

伙计对 box2d sensor 的代码稍作改动,粗略的实现了爆炸的效果。

当时我觉得这个效果应该会有用到的地方,便留下了一点儿印象。

后来做水浮力的时候,我想到水浮力也不就和爆炸差不多么,

只不过前者由圆心向外辐散,而后者则是对感知到的物体施加一个持续向上的力。

说干就干,后来一看效果,还不错。

不过还是遇到了一些问题,诸如:

小密度的物体应该是要比较淡定的漂浮在水面上的,

但这种实现达到的效果却是——小密度物体上下抖个不停。

还有就是,为了真实的让玩家感受到水是具有阻力的,

我特意在物体刚接触水面时将物体的线速度,角速度都做了比较大幅度的削减。

如果按照物理知识来做的话,物体进入水中的时候,

如果重力与浮力相等或者是大于浮力,依然会以加速度下沉。

就不多说什么了,有时候为了效果逼真,反而要去违背实际物理情景。

回到正题

话说这里遇到了一个bug:

就是在刚刚进入游戏的时候,竟然发现物体落水的时候没有速度骤减的效果,

之前由于在做别的效果,也没太留心。

今天早上起床之后又遇到了这个问题,于是便决定专心将这个bug干掉。

这次我打开了box2d的 debugDraw,过不其然,debugDraw 一打开,这个bug便再经不起推敲。

何出此言?因为我发现某些刚进入关卡的时候,场景底部的 sensor fixture 竟然都不存在。

具体来说,某些时候应该是指刚打开游戏的时候。

一旦完成这第一次关卡加载,重来、上一关或下一关一下,立即发现 sensor fixture 正常的出现在了场景底部。

值得注意的是,浮力感知 sensor fixture 的宽度大小是基于地图的宽度大小的。

我的第一个猜测便是,可能在地图的宽度大小数据还未加载进来的时候,便完成了 sensor fixture 的创建。

这样, sensor fixture 拿到的地图的宽度大小肯定是一个未初始化的值,

如果这个值是0,那么便能很好的解释上面出现的现象。

至于为什么“重来”、“下一关”或“上一关”之后,能正常取得地图宽度大小。

那是因为,我将地图的尺寸保存到了单例里面,在第二次以及之后那地图宽度数据的时候,是能正常拿到的。

有了想法回到项目里面一看,果然如我所料。

very good,bug 被成功干掉!

转载于:https://www.cnblogs.com/yang3wei/archive/2012/04/15/2739784.html

记录一个粗心所导致的bug相关推荐

  1. 记录一个海思TOE的BUG

    原始引用地址: 记录一个海思TOE的BUG time: 2020.5.3 17:57 发现的过程 ​ 最近在做onvif开发时,有x86的验证的功能没有问题,移动到海思Hi3536上简单运行貌视也很正 ...

  2. 【操作系统】使用循环创建线程,一个手残导致的bug

    让我们先看看这个手残的程序-- 这是一个简单的生产者消费者问题. #include <assert.h> #include <stdio.h> #include <std ...

  3. 记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)

    记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径.) 第一想法是路径问题: 1.检查文件路径是否正确 2.另外 ...

  4. 事件溯源|日志记录-一个基础的微服务模式

    导语: 微服务架构目前是各互联网系统架构的首选,在使用微服务的过程中,调试一个分布式系统是一项具有挑战的任务, 事件溯源是一种非常好的方式来解决微服务可见性的一种手段.且看大名鼎鼎的couchbase ...

  5. linux7无法进入系统,记录一次断电导致centos7.4系统不能正常进入的解决方案

    情况描述: 园区意外断电,导致服务器centos7.4系统不能正常进入,一直卡在进度条界面,按esc或者f5能够看到详细的错误,主要有三个服务报错,如下图: chronyd.Postfix.polki ...

  6. 4天4夜渡劫成功,解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问

    经历4天4夜解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问 一.问题重现 二.排查问题 三.解决问题 四.关于Mysql这两个参数的作用以及解释 五.总结 标题是不是惊讶到你了,但 ...

  7. 记录一个vue监控屏幕宽度的问题

    记录一个vue监控屏幕宽度的问题 因为今天有查询过如何用vue监控屏幕宽度的问题,搜到的很多都是这样的写法: data() {return {screenWidth: null, //屏幕尺寸};}, ...

  8. 记一次bug,由于前端参数不对导致的bug,no int/Int-argument constructor/factory method to deserialize from Number valu

    bug现象: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of com ...

  9. 小记~随笔[记录一个Matlab的中的一个错误]

    记录一个Matlab的错误 导语 : 今天打开了Matlab , 在初始化完毕后出现了一个报错 , 通过回忆之前的操作我解决了这个问题. 并产生了一些思考. 这篇属于随笔类的文章 , 文笔散乱 , 想 ...

最新文章

  1. OpenStack部署
  2. 微信js sdk 分享 失败 有时候好 有时候坏
  3. nestjs配置MySQL数据库,Nest.js 中的数据库操作
  4. 缓存-分布式锁-Redisson-lock锁测试
  5. webpack 合并压缩_webpack 打包压缩js和css的方法示例
  6. word 公式编辑器 键入技巧 | 写数学作业必备速查表
  7. Python基础之爬取豆瓣图书信息
  8. 在 kali 中下载使用 Nessus
  9. 按键精灵随机输入数字脚本,防重复脚本
  10. 两个人聪明人的空城——《司马懿之虎啸龙吟》
  11. 酵素果冻真的能减肥吗?
  12. 【每日最爱一句】2013.07.10
  13. China Joy 还没看够?2020 谷歌游戏出海峰会带来更多精彩!
  14. 并发——锁升级(偏向锁,轻量级锁,重量级锁,及常见锁)
  15. 7-2 531 字符串_小写变大写
  16. [Cocos Creator] 本地文件加载系列六:本地龙骨动画dragonbones加载(web模式)
  17. 三菱4轴控制伺服案例,三菱PLC FX3U加三菱1PG定位模 块控制4个松下伺服,有完整的注释,结构清晰明了。伺服控制程序JOG HOME 定位 全部写成了功能块FB .你可以直接拿过去用
  18. spin_lock_bh()与spin_unlock_bh()
  19. 聚类 轮廓 matlab,通过聚类点matlab着色的等高线图
  20. 【全球软件大会】华为前端工程师分享:华为云官网的智能化实践

热门文章

  1. python程序设计报告-20192116 实验一《Python程序设计》实验报告
  2. python官方推荐的三本书-如果只能推荐3本关于python的书,你会推荐哪3本?
  3. 开课吧python课程-开课吧Python课程亮相胡海泉抖音直播间
  4. python绘制曲线图-python绘制多个曲线的折线图
  5. python入门指南pdf-跟老齐学Python+从入门到精通 PDF 下载
  6. 菜鸟教程python3-Python3 简介
  7. python代码大全表解释-python操作列表的函数使用代码详解
  8. python处理excel教程实例-Python玩转Excel的读写改实例
  9. python自带的shell是什么-python中执行shell的两种方法总结
  10. 6翻了C语言,《嗨翻C语言》随书练习六 6章 二叉树简单例子