12.4.2 在物理世界中添加矩形

更新于 2026年10月10日 版权声明
12.4.2 在物理世界中添加矩形

读者可以想象一下,现实生活中的物体基本上都是由圆形与多边形组成,所以在Box2d物理世界中存在两种2D图形,一种是圆形,一种是多边形。在Box2D中物体的创建都应该设置质量、摩擦力与恢复力这三个基本属性。

Box2D属于工厂模式,也就是说在Box2D的物理世界中创建物体,都是由工厂(World生成的,而不是由new创建的。

使用类World创建一个物体的基本步骤如下。

(1)首先创建物体皮肤。

(2)然后创建物体刚体。

(3)最后通过皮肤与刚体信息去创建一个物体。

接下来将通过一个实例的实现过程,详细讲解使用Box2D创建矩形的方法。

图示

实例文件MySurfaceView.java的实现代码如下

图示

图示

图示

图示

在上述代码中,涉及了本章12.1节中介绍的如下几个概念。(https://www.daowen.com)

■ 质量(Density):当物体质量设置为0时,此物体视为“静态物体”;所谓“静态物体”

表示不需要运动的物体;比如现实生活中的山、房门等这些没有外力不会发生运动的

物体则认为是静态不运动的。

■ 摩擦力(Friction):取值通常设置在0~1之间,0意味着没有摩擦,1会产生最强摩

擦。

■ 恢复力(Restitution):取值也通常设置在0~1之间,0表示物体没有恢复力,1

表示物体拥有最大恢复力。

■ 刚体设置坐标的时候,需要传入现实生活中的“米”做为参数单位,所以这里除以比

例“RATE”,将像素单位转换为“米”。

方法BodyDef.position.set(float x,float y)的功能是设置Body相对于物理世界的坐标。我们知道,在物理世界中创建出的物体默认放置是以物理中心点为锚点,那么为了让其与手机屏幕绘制图形位置重合,需要将其物理的X位置加上其宽的一半,其物体的Y位置加上其高的一半,这样就相当于将其Body的锚点设置成了左上角,如图12-7所示。

图示

图12-7 物体与图形坐标重合

执行后的效果如图12-8所示

图示

图12-8 执行效果

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)