这个是我遇到的BUG
我的物理世界是这样的:
由四面静态墙组成的世界包围盒,然后不断地从一个点喷出圆球。(这个本来是我测试物理引擎承受能力的小DEMO)
本来是正常运行的,我出去吃个饭,关闭电脑。回来后开机,打开VS,重新编译,运行这个DEMO。
这个时候诡异的事情发生了,球喷射出去后,离喷射点较远的球速度本来是逐渐缓慢,但是突然急剧加速,并且越来越大,
周围的球也被带动起来,快速弹射起来,最后全部弹出包围盒了。。。
我百思不得其解,我明明没做任何修改,为何会发生这种事。于是我重新新建一个项目,只添加增加物理世界的几句简短代码,
不做其他引入。然后一样创建一个包围盒,并在一个点不断喷射出小球。
编译,运行,依旧暴乱。。。
这个时候我迷茫了,于是我再简化我增加的代码,以防止潜在BUG,我把弹射小球改称只产生小球,并不给它们初速度。。。
再次运行,诡异的事情依旧。由于我这次没加速度,所以小球们一开始静止在原地,但最上方的小球慢慢地震动,然后震动速度越来越大。
凭空产生能量,而且带动下方的小球,直到最后一样快速冲出包围盒。
这个时候我就考虑到不是引擎就是编译器出问题了。。。考虑到微软强大的编译器怎么会这么容易出问题,我先研究引擎。
我发现mWorld变量里有这样一个函数,setSubstep,设置子步的。我想是不是子步太小导致引擎计算太频繁导致BUG,于是由默认的1改为10。
这个时候奇迹出现了,竟然不异常了。奇怪的是我之前明明没改过这个东西啊,怎么会异常。
然后我把数值又改回1,奇怪的是,这次也正常了,没异常出现。。
我返回我原来的项目,允许后发现也正常了。。。。
好奇葩!!!!!!!
这个BUG有随机性跟时间性!!!!!!!!
请问各位遇到过吗?