b2_velocityThreshold 一个困扰了我很久的问题终于解决了_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > b2_velocityThreshold 一个困扰了我很久的问题终于解决了

b2_velocityThreshold 一个困扰了我很久的问题终于解决了

 2013/11/11 14:39:45  薄桜の霊  博客园  我要评论(0)
  • 摘要:最近工作室在开发一款台球游戏,cocos2d-x+box2d。开发还算顺利,但是有一个问题困扰了我很久,当球体跟球台的边缘碰撞的时候,如果速度比较小的情况下,球体没有反弹,好像被边缘吸住了一样,如果用白球击打一个已经跟边缘接触的花球,不管力度有多大,花球始终沿着边缘走,不会被反弹,最终导致只要击打靠边的花球,不管力度和角度都能滚动到四个角落的球袋里,整个物理世界模拟严重失真。后来我尝试用老版本的box2d,这个问题竟然解决了,由此让我一度怀疑新版的box2d在模拟弹性碰撞上有先天不足
  • 标签:解决 一个 问题

最近工作室在开发一款台球游戏,cocos2d-x + box2d。开发还算顺利,但是有一个问题困扰了我很久,当球体跟球台的边缘碰撞的时候,如果速度比较小的情况下,球体没有反弹,好像被边缘吸住了一样,如果用白球击打一个已经跟边缘接触的花球,不管力度有多大,花球始终沿着边缘走,不会被反弹,最终导致只要击打靠边的花球,不管力度和角度都能滚动到四个角落的球袋里,整个物理世界模拟严重失真。后来我尝试用老版本的box2d,这个问题竟然解决了,由此让我一度怀疑新版的box2d在模拟弹性碰撞上有先天不足,所以我果断把老版本的box2d移植到了新版的cocos2d-x中,问题虽然解决,但是心中总有个节,就是新老版本的box2d到底差在哪里,会导致这个问题? 最近稍微有点闲,于是又把这个问题发出来研究一下,最后终于找到了问题的根源----b2_velocityThreshold,在b2settings.h里定义的一个常量。先看一下这个常量的注释:A velocity threshold for elastic collisions. Any collision with a relative linear velocity below this threshold will be treated as inelastic. 意思就是这是一个弹性碰撞相关的速度阈值,任何碰撞的速度如果低于这个阈值将会认为是非弹性碰撞,看了这个注释秒懂了 -_-#  赶快拿新老两个版本的box2d比较,果不其然,老版本这个值默认是0,不知什么原因在新版就变成了1,困扰我很久的问题终于彻底解决了。心情不错,附上我们工作室的一张游戏截图:)

 

转载请注明出处:http://www.cnblogs.com/soap1984/p/3417558.html

上一篇: Autofac中的属性注入功能使用 下一篇: 没有下一篇了!
发表评论
用户名: 匿名