zoukankan      html  css  js  c++  java
  • 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,我就不再讲解了,大家看代码吧!

     源代码下载

  • 相关阅读:
    linux内核中如何访问寄存器?
    uboot加载itb文件后提示"ERROR: new format image overwritten"如何处理?
    如何单独编译Linux内核源码中的驱动为可加载模块?
    openwrt如何打开linux内核的CONFIG_DEVMEM选项?
    openwrt的shell下如何访问寄存器的内容?
    linux系统错误码大全
    第 3 章 文本元素
    第 2 章 基本格式
    第 1 章 HTML5 概述
    第 20 章 项目实战--案例和关于[7]
  • 原文地址:https://www.cnblogs.com/cooka/p/3559614.html
Copyright © 2011-2022 走看看