首页 理论教育 在物理世界中添加矩形-Android游戏开发

在物理世界中添加矩形-Android游戏开发

时间:2023-10-22 理论教育 版权反馈
【摘要】:读者可以想象一下,现实生活中的物体基本上都是由圆形与多边形组成,所以在Box2d物理世界中存在两种2D图形,一种是圆形,一种是多边形。在Box2D中物体的创建都应该设置质量、摩擦力与恢复力这三个基本属性。Box2D属于工厂模式,也就是说在Box2D的物理世界中创建物体,都是由工厂(World生成的,而不是由new创建的。接下来将通过一个实例的实现过程,详细讲解使用Box2D创建矩形的方法。方法BodyDef.position.set的功能是设置Body相对于物理世界的坐标。

在物理世界中添加矩形-Android游戏开发

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

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

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

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

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

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

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

978-7-111-54543-9-Part03-110.jpg

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

978-7-111-54543-9-Part03-111.jpg

978-7-111-54543-9-Part03-112.jpg

978-7-111-54543-9-Part03-113.jpg

978-7-111-54543-9-Part03-114.jpg

在上述代码中,涉及了本章12.1节中介绍的如下几个概念。

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

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

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

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

擦。

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

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

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

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

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

978-7-111-54543-9-Part03-115.jpg

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

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

978-7-111-54543-9-Part03-116.jpg

图12-8 执行效果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈