- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Box2D 物理引擎
Box2d 是一个很出名的 2d 物理引擎,大家可以 google 之。Box2d 有 C++,flash 和 Java 等版本。android可以直接使用 java 版本的 Jbox2d,但因为 Jbox2d 的图形渲染是使用 processing 库来实现的,所以, 在 android 中使用 Jbox2d 的时候,图形渲染的工作就只能自己来写了。因为网上关于 box2d 的资料真的非常的少,特别是关于图形绘制方面
package
{
importflash.display.MovieClip; importBox2D.Dynamics.*; importBox2D.Collision.*; importBox2D.Collision.Shapes.*; importBox2D.Common.Math.*; importflash.events.Event; importflash.display.Sprite; importflash.events.MouseEvent;
/**
*date:2009.3.18
*BOX2D 测试
*@authorcwin5
*
*
*全局的对象的构造函数作了三件事情:
*1、一个在 b2AABB 类中的实例构建的坐标系统
*2、一个定义重力的向量,这是一个 b2Vec2 类构建的实例。
*3、一个布尔变量来定义对象是否 沉迷。(设置如果你为 true ,对象将会沉迷)。
*
*执行 Step() 函数,每一帧都会更新所有的 Body 在 world 中的位置。
*
*
*虽然现在的 world 中是空的,但是你可以往里面添加任何的球体或者盒子, 以及你想到的任何形状的东西,我们需要定义一个 Body 。
*一个 body 体大概需要做 2-4 件事情:
***1、定义一个形状。
*2、一个( x,y)的位置
*下面的定义可选:
*3、角度
*4、一个预制的 Sprite 对象。
*
*在 Box2DFlash 的例子中,你可能注意到所有的形状都是简单的。这是因为所有的东西在每一帧都是被线条重绘。
*如果你想在你的游戏或者其他的什么中具有一些有特色的东西,你可以通过综合形状定义 Body
来制作一个 Sprite
*
*形状的定义,我们有 3 种类型的形状定义,他们都是扩展的 b2ShapeDef 基类。
*
*我们先来说 b2BoxDef 类,这个具有 4 个重要的属性:
*1、SetAsBox( 设定边框):这是一个向量,本质上说他就是一个形状的中心坐标
*2、Density( 密度):在碰撞的等式中我们使用密度 *面积=质量,密度如果是 0 或者 null, 将会是一个静止的对象。
*3、Friction( 摩擦力):这用来计算两个对象之间的摩擦,你可以在 0.0-1.0 之间调整它们。
*4、Restitution( 弹性): 这是调整对象弹性程度的属性,你可以在 0.0-1.0 之间调整它们。
*b2CircleDef 类中有一个不同的属性,代替 SetAsBox 是他的 Radius( 半径)。
*b2PolyDef 类具有一个顶点数组(最大是 8)来代替 SetAsBox 和 Radius 。这些顶点都是 b2Vec2
类型的对象。
*
*/
Public class Main extends MovieClip
{
Public var m_world:b2World;// 世界对象
Public var m_iterations:int=10;// 跌代
Public var m_timeStep:Number=1.0/24.0;// 时间步
Public function Main()
{
//创建世界边界
Var worldAABB:b2AABB=new b2AABB(); worldAABB.lowerBound.Set(-100.0,-100.0);// 上限worldAABB.upperBound.Set(100.0,100.0);// 下限
//确定重力
Var gravity:b2Vec2=newb2Vec2(0.0,10.0);
//允许引擎睡眠
Var doSleep:Boolean=true;
//构建一个世界对象
m_world=new b2World(worldAABB,gravity,doSleep);// 边界,重力,睡眠开关
//创建变量
Var body:b2Body;
Var bodyDef:b2BodyDef; Var boxDef:b2PolygonDef;
Var circleDef:b2CircleDef;
//添加地表
bodyDef=new b2BodyDef();// 物体bodyDef.posit
您可能关注的文档
最近下载
- 海上避碰规则.pptx VIP
- 避碰规则COLREG72-(03中英版).doc VIP
- YY 0068.1-2008 医用内窥镜 硬性内窥镜 第1部分:光学性能及测试方法.pdf
- 故事罗伯特.麦基.doc VIP
- 回肠造口还纳术护理.pptx
- YY0068.3-2008 医用内窥镜 硬性内窥镜 第3部分:标签和随附资料.pdf VIP
- 《YY/T 0068.2-2008医用内窥镜 硬性内窥镜 第2部分:机械性能及测试方法》.pdf
- 统编版八年级语文上册《文学性文本阅读》期中复习专项练习题(带答案).docx VIP
- YY 0068.2-2008医用内窥镜 硬性内窥镜 第2部分:机械性能及测试方法.pdf
- 提升课堂互动的课件设计PPT模板.pptx VIP
文档评论(0)