没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
目录
10.2 2D 的王者 JBox2D ....................................................................................................................4
10.2.1 基本的物理学概念.......................................................................................................4
10.2.2 JBox2D 中常用类的介绍(1) .....................................................................................6
1.Vec2 类(二维向量)................................................................................................6
2.AABB 包围盒...............................................................................................................8
10.2.2 JBox2D 中常用类的介绍(2) .....................................................................................9
3.BodyDef 类(刚体描述)..........................................................................................9
4.World 类(世界)....................................................................................................10
5.ShapeDef 类(形状描述) ......................................................................................11
10.2.2 JBox2D 中常用类的介绍(3) ...................................................................................11
6.CircleDef 类(圆形描述) .......................................................................................12
7.PolygonDef 类(多边形描述) ...............................................................................12
8.Body 类(刚体) .....................................................................................................13
10.3 球体撞击木块金字塔案例....................................................................................................14
10.3.1 案例运行效果 ............................................................................................................15
10.3.2 案例的基本框架结构.................................................................................................16
10.3.3 常量类--Constant .......................................................................................................18
10.3.4 抽象类--MyBody.........................................................................................................18
10.3.5 圆形刚体类--MyCircleColor .......................................................................................19
10.3.6 生成刚体形状的工具类--Box2DUtil ..........................................................................20
10.3.7 颜色工具类--ColorUtil................................................................................................23
10.3.8 主控制类--MyBox2dActivity(1).............................................................................24
10.3.8 主控制类--MyBox2dActivity(2).............................................................................26
10.3.9 显示界面类--GameView ............................................................................................28
10.3.10 绘制线程类--DrawThread ........................................................................................30
10.4 简易打砖块案例 ...................................................................................................................31
10.4.1 一般碰撞版(1) ......................................................................................................31
1.案例运行效果...........................................................................................................31
10.4.1 一般碰撞版(2) ......................................................................................................33
2.主控制类--MyBox2dActivity.....................................................................................33
10.4.2 碰撞后消失版(1)...................................................................................................36
1.案例运行效果...........................................................................................................36
2.矩形刚体类--MyRectColor .......................................................................................36
10.4.2 碰撞后消失版(2)...................................................................................................39
3.生成刚体形状工具类--Box2DUtil ............................................................................39
4.刚体查找工具类--BodySearchUtil............................................................................40
10.4.2 碰撞后消失版(3)...................................................................................................41
5.主控制类--MyBox2dActivity.....................................................................................41
10.4.2 碰撞后消失版(4)...................................................................................................44
6.线程类--DrawThread ................................................................................................44
10.5 旋转关节跷跷板案例 ...........................................................................................................45
10.5.1 旋转关节介绍 ............................................................................................................45
10.5.4 将场景中的刚体摆放到位.........................................................................................49
10.6.3 主控制类--MyBox2dActivity.......................................................................................58
10.7 组合机械结构案例 ...............................................................................................................60
10.7.1 案例的运行效果 ........................................................................................................61
10.7.4 圆形刚体类--MyCircleColor .......................................................................................65
10.7.5 生成刚体形状的工具类--Box2DUtil ..........................................................................66
10.7.6 主控制类--MyBox2dActivity.......................................................................................67
10.7.7 游戏界面类--GameView ............................................................................................71
10.7.8 绘制线程类--DrawThread ..........................................................................................71
10.2 2D 的王者 JBox2D
JBox2D 是开源的物理引擎 Box2D 的 Java 版本,可以直接用于 Android。由于 JBox2D 的图形渲染使用的是
Processing 库,因此在 Android 平台上使用 JBox2D 时,图形渲染工作只能自行开发。该引擎能够根据开
发人员设定的参数,如重力、密度、摩擦系数和弹性系数等,自动地进行 2D 刚体物理运动的全方位模拟。
每种物理引擎都有其独特的概念,在学习开源的物理引擎时,首先需要弄明白的就是其基本概念。因此,
本节主要为读者复习一下物理学中的一些基本概念,并介绍 JBox2D 中的一些常用类与概念。
10.2.1 基本的物理学概念
游戏是对真实世界的仿真,其中用到了许多物理学知识,如密度、质量、质心、摩擦力、扭矩以及碰撞(恢
复)系数等。接下来,本小节将简要介绍用 JBox2D 开发游戏时经常用到的一些物理学概念。
密度
物理学中密度指的是单位体积的质量,符号为"ρ",常用单位为 kg/m^3。其是物质的一种基本特性,不随
物体的质量、体积的改变而改变,同种物质的密度相同。
质量
质量指的是物体中所含物质的量,即物体惯性的大小,国际单位是 kg。同一物体的质量通常是一个常量,
不因高度、经度或者纬度的改变而变化。但是根据爱因斯坦的相对论,同一物体的质量会随着速度的变化
而改变。只有运动接近光速才能感觉到这种变化,因此在游戏中一般不考虑速度对质量的影响。
质心
物体(或物体系)的质量中心,是研究物体(或物体系)机械运动的一个重要参考点。当作用力(或合力)
通过该点时,物体只作移动而不发生转动;否则在发生移动的同时物体将绕该点转动。
研究质心的运动时,可将物体的质量看作集中于质心。理论上,质心是对物体的质量分布用"加权平均法"
求出的平均中心。
摩擦力
当两个互相接触的物体,如果要发生或者已经发生相对运动。就会在接触面上产生一种阻碍该相对运动的
力,这种力就称之为摩擦力。其基本情况如图 10-9 所示。
图 10-9 摩擦力示意图
提示 根据物体是否发生相对运动可以分为静摩擦力与滑动摩擦力,实际开发中可以进行简化,但若要模拟
更加真实的效果就需要分别开发。
扭矩
扭矩在物理学中就是力矩的大小,等于力与力臂的乘积,国际单位是 Nm(牛米)。在力臂不变的情况下,
力越大,扭矩越大。基本情况如图 10-10 所示。
恢复系数
两物体碰撞后的总动能与碰撞前的总动能之间的比称之为恢复系数,其取值范围为 0~1。如果恢复系数为 1,
则碰撞为完全弹性碰撞,满足机械能守恒;如果恢复系数小于 1 并且大于 0,则为非完全弹性碰撞,不满足
机械能守恒,这种情况是最常见的;如果恢复系数为 0,则为完全非弹性碰撞,两个物体会粘在一起。基本
情况如图 10-11 所示。
图 10-10 扭矩示意图
图 10-11 各种碰撞情况
说 明 在 图 10-11 中 , 两 个 小 球 的 质 量 相 等 , 小 球 的 初 速 度 V1 大 于 V2 。
10.2.2 JBox2D 中常用类的介绍(1)
俗话说得好"基础不牢,地动山摇"。在学习新技术时,首先要学习的就是该技术的一些基本概念,因此本
小节主要介绍 JBox2D 中一些必知必会的类。
1.Vec2 类(二维向量)
该类属于 org.jbox2d.common 包,继承自 java.lang.Object 类,其对象用于表示一个二维向量或二维笛卡
尔坐标。二维向量 Vec2 类的基本功能如图 10-12 所示。
图 10-12 二维向量示意图
该类在 JBox2D 中的使用频率非常高,通常用于表示物体的位置、速度等,其构造器与常用方法及属性如表
10-2 所列。
表 10-2 构造器与主要方法
方法、属性或构造器签名
说 明
类
型
public Vec2(float x,float y)
创建一个 Vec2 的对象,该对象
表示
X
轴分量为 x,
Y
轴分量为 y 的
一个
向量或坐标系中的(x,y)点
构
造器
public static Vec2 abs(Vec2 a)
求向量的绝对值
方
法
public Vec2 add(Vec2 v)
返回该向量与另一向量的和,
并不改变其中的任何一个的值
方
法
public Vec2 addLocal(Vec2 v)
返回该向量与另一向量的和,
并改变当前的向量
方
法
public Vec2 clone()
复制向量
方
法
剩余67页未读,继续阅读
资源评论
零九
- 粉丝: 36
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功