DX10引擎计划——应用(《是男人就点100下》演示Demo、粘连BUG的修复方法)

今天利用之前写好的物理系统,稍作修改,把《是男人就点100下》写了出来。(可见引擎普适性还是有待提高)

百度云链接:

http://pan.baidu.com/s/1mgN0vk0

 

在写这个游戏的过程中发现,不解决粘连BUG就没法进行下去,于是跟踪球碰撞后的速度变量,发现了问题:

是下面这段代码的问题:

DX10引擎计划——应用(《是男人就点100下》演示Demo、粘连BUG的修复方法)_第1张图片

运行到这里以后就出现了问题,当物体运行速度极小时,但是又不小于设置的“最小速度阀”,这时候就有事了。这段代码本意是,如果物体运动速度与碰撞法线同向,就不符合发起方条件,直接退出;如果垂直于法线(点乘之和为0),就直接退出以简化运算,但是有一种情况就是,物体运行速度极小,而又不小于最小速度阀,这样就筛选不掉这个极小速度了,会到这则个物体沿着这个极小速度缓慢移动,表现就是粘连,或者陷入(被撞物体固定不动)。

*****************************************

我想到了两个解决办法,

解决方法1:调整判断为0的条件为最小速度阀。这个方法只能是估算,还存在一个不稳定的误差,因为有一步点乘运算。这个方法我排除掉了。采用了第二种

解决方法2:对处理点乘乘积为0不进行特殊处理,通过后续的动量定理进行处理,以及用下一次循环的最小速度阀进行过滤。这个方法误差很小。

本来是想简化运算的反而画蛇添足了,教训啊。

修改后代码:

 

程序运行截图:

DX10引擎计划——应用(《是男人就点100下》演示Demo、粘连BUG的修复方法)_第2张图片

DX10引擎计划——应用(《是男人就点100下》演示Demo、粘连BUG的修复方法)_第3张图片

————————————————————————————————————————————————————-

吐槽环节:

找工作的事暂且先搁置了,自己内心还没真正平静下来,浮躁。之前很多朋友一直在帮我找工作,真的非常感谢你们。。。但是我一直以为关系只能算是辅助性的,自身实力达不到要求的话,再硬的关系也是白费。类似于打dota、打仗,正面战场一定要能拼得过,打游击起不到关键作用啊。

————————————————————————————————————————————————————

下一步计划:

子弹类进行了改良,突然发现设计一个射击视角的游戏非常容易,但是还有个缺憾就是骨骼动画还没实现。下一步把这个实现一下,做个射击游戏,弄俩AI进去打打。这样算是拿得出手的作品了吧。

 

*********

终极目标,创造“世界”。

 

你可能感兴趣的:(demo)