12.4.3 在物理世界中添加自定义多边形

更新于 2026年10月10日 版权声明
12.4.3 在物理世界中添加自定义多边形

在本章12.4.2和12.4.3小节的实例中,看似整个创建过程都与屏幕绘制没有任何的关系事实也确实如此,屏幕绘制的图形与Box2D无关。Box2D引擎只负责提供物理世界的模拟数据。也就是说,如果想让屏幕中显示一个附有重力的图形,那么则需要一个重力物体运动轨迹的数据,而Box2D提供的Body正是一个拥有重力的物体。通过将Body在模拟的物理世界中的运动数据传给绘制的图形,绘制的图形就会沿着提供的运动轨迹来运行,也就相当于图形拥有了重力。

图示

通过Body的getPosition函数得到Body的中心点的位置,然后通过比例转换成像素,再分别赋值给屏幕绘制的图形X,Y坐标。

注意:此方法获取的是物体的中心点坐标,所以还需要将其X坐标减去物体的宽的一半Y坐标减去物体的高的一半,得到其左上角坐标。当然如果图形是以中心点进行绘制的话,就可以将获取的中心点坐标传递给绘制的图形即可。

接下来将通过一个实例的实现过程,详细讲解使用Box2D添加自定义多边形的方法。

图示

实例文件MySurfaceView.java的实现代码如下(https://www.daowen.com)

图示

图示

图示

图示

因为物理世界是在不断地模拟,所以也要不断地去获取物体在物理世界中的最新坐标,然后传递给绘制的图形,图形就会按照物体在物理世界中的运动轨迹去“运动”。执行后的效果如图12-9所示。

图示

图12-9 执行效果

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