box2d 绘制圆

让刚体听我的——ApplyForce、ApplyImpulse、SetLinearVelocity一节中,来自天地会sxl001问道如何创建圆形的边界(Round Boundary),好吧,我用这个教程来回答他。

实际上Box2D中没有专门创建圆弧的API (b2CircleDef创建的是实体圆形不是圆弧),所以试图寻找这样一个API的同学就放弃吧。结束了?坑爹啊!

哈哈,既然没有圆弧API,我就想其他的方法嘛。还记得Box2D多边形刚体的创建方法嘛?我们可以利用组合法,把多个形状组合起来形成一个这你的形状,当然也可以包括圆弧,下面的图可以更好的解释这一点。

图中我用12个线段组合起来模拟一个圆形,当然你可以用24个、36个线段等等。线段数越多,圆形就越标准,同时也越消耗CPU,所以能模拟出圆形效果就可以了,不用追求完美。现在,你应该有思路了吧:

  1. 定义线段的个数,12、24、36随你便,但不要太多。
  2. for循环遍历创建线段,根据线段索引i和圆形边界半径radius计算线段的坐标、角度
  3. 利用Box2D多边形刚体的组合法在线段的坐标位置创建与之角度相同的矩形刚体

效果如下,点击舞台任意位置,创建刚体:

我在下面的代码中做了详细的注释并highlight,我就不再讲解了,大家看代码吧!

 源代码下载

原文地址:https://www.cnblogs.com/cooka/p/3559614.html