zoukankan      html  css  js  c++  java
  • b2_velocityThreshold 一个困扰了我很久的问题终于解决了

    最近工作室在开发一款台球游戏,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

  • 相关阅读:
    OleDbCommand 的用法
    递归求阶乘
    C#重写窗体的方法
    HDU 5229 ZCC loves strings 博弈
    HDU 5228 ZCC loves straight flush 暴力
    POJ 1330 Nearest Common Ancestors LCA
    HDU 5234 Happy birthday 01背包
    HDU 5233 Gunner II 离散化
    fast-IO
    HDU 5265 pog loves szh II 二分
  • 原文地址:https://www.cnblogs.com/soap1984/p/elastic-collisions-box2d.html
Copyright © 2011-2022 走看看