2022年Java简单物理引擎 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年Java简单物理引擎 .pdf》由会员分享,可在线阅读,更多相关《2022年Java简单物理引擎 .pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、这款引擎本来是FLASH 版本的, 后来移植到JAVA 和 C+版本,但是 JAVA 版本貌似和C+版本不同,我也没有深究,这款引擎比较适合做简单的物理游戏,速度比JBOX2D 要快的多,有兴趣的朋友可以试试。APE( 物力引擎 ) APE ,设么是 APE 呢。APE(Actionscript Physics Engine)是一个 ActionScript3写成的物理引擎,用于模拟现实中物体发生的运动和碰撞。它是免费、开源的,遵循 MIT 协议。看来特别适用用来做游戏开发,已经有许多很有趣的应用使用这个开发的。现提供了 Java Port, 和 C+ SDL Port 官方网址为:http:
2、/www.cove.org/ape/下载地址为:http:/www.cove.org/ape/ape_a045.zip(包含两个demo ,api,swc 文件,和源码)官网的两个例子 : Demo1: http:/www.cove.org/ape/demo1.htm名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - Demo2: http:/www.cove.org/ape/demo2.htm名师资料总结 - - -精品资料欢迎
3、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - API 地址 : http:/www.cove.org/ape/docs/api/下面中文版 ,网上搜集的APE 中总共才12 个类,用起来相当的方便。这12 个类的继承关系如下:目录:AbstractCollection Group Composite AbstractItem AbstractConstraint SpringConstraint AbstractParticle RectanglePartic
4、le CircleParticle WheelParticle Vector APEngine AbstractCollection(子类有: Group 和 Composite )此类为群组性的基类。你不应实例化这个类,而应该使用该类的子类。属性:constraints 属性constraints:Array 只读 一个数组,包含所有被加入到AbstractCollection中的 AbstractConstraint类的实例。particles 属性particles:Array 只读 一个数组,包含所有被加入到AbstractCollection中的 AbstractParticle类的
5、实例。sprite 属性sprite:Sprite 只读 为渲染和增加children 而提供的作为容器使用的Sprite 。当这个 sprite 第一次被请求时,这个 sprite 会自动的加入到APEngine类的全局容器中。构造函数:public function AbstractCollection() 方法:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - addConstraint () 方法public funct
6、ion addConstraint(c:AbstractConstraint):void 在收集器中增加一个约束。参数c:AbstractConstraint 被加入的约束 . addParticle () 方法public function addParticle(p:AbstractParticle):void 在 AbstractCollection中加入一个AbstractParticle 参数 p:AbstractParticle 被加入的粒子cleanup () 方法public function cleanup():void 调用 AbstractCollection每个成员的c
7、leanup ()方法 . 当 AbstractCollection 从他的父容器中被移除的话,cleanup() 方法会自动的被调用。getAll () 方法public function getAll():Array 返回一个数组,这个数组包含被加入到AbstractCollection.中的每一个粒子和约束。init () 方法public function init():void 通过调用每一个成员的init()方法实例化这个AbstractCollection的每一个成员。paint () 方法public function paint():void 通过调用每一个成员的paint
8、()方法来渲染AbstractCollection的每个成员。removeConstraint () 方法public function removeConstraint(c:AbstractConstraint):void 从收集器中删除参数指定的约束。参数c:AbstractConstraint 将被移除的约束。removeParticle ()方法public function removeParticle(p:AbstractParticle):void 从 AbstractCollection中移除一个AbstractParticle 参数p:AbstractParticle 将被移
9、除的粒子Group (继承自 AbstractCollection)组可以包含粒子,约束和复合体。组可以被设置为和其他的组进行碰撞检测。属性:collideInternal:Boolean 读写 决定这个组内的成员彼此是否进行碰撞检测;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - collisionList:Array 只读 返回一个数组,这个数组包含所有和这个组进行碰撞检测的所有组的实例。composites:Array
10、只读 返回一个数组,这个数组包含所有加入到这个组的复合体。构造函数public function Group(collideInternal:Boolean = false) Group 是 APE 中的主要的用于组织的类。一旦创建了组,并把粒子, 约束, 复合体加入组,那么这些东西也就加入了APEngine 。组可以包含粒子,约束和复合体。复合体只能包含粒子和约束。参数:collideInternal:Boolean (default = false) 方法:addCollidable()方法addCollidable(g:Group):void 加入一个组的实例与这个组进行碰撞检测。add
11、CollidableList()方法public function addCollidableList(list:Array):void 加入 AbstractCollection实例的数组,让数组中的元素与这个组进行碰撞检测。addComposite()方法public function addComposite(c:Composite):void 在这个组中加入复合体cleanup() 方法public override function cleanup():void 调用组的cleanup ()方法将会调用组中所有成员的cleanup ()方法。当组从APEngine引擎中移除时,组的c
12、leanup ()方法会自动的调用。getAll() 方法public override function getAll():Array 返回一个包含组中所有粒子,约束,复合体的数组。init() public override function init():void 通过依次调用组中每个成员的init()方法来初始化组中的每个成员。paint() 方法public override function paint():void Paints 组中的所有成员. 这个方法由APEngine 类自动的调用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
13、 - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - removeCollidable()方法public function removeCollidable(g:Group):void 从这个组的collidable list中移除一个组。removeComposite()方法public function removeComposite(c:Composite):void 从组中移除复合体。Composite (继承自AbstractCollection)复合体可以包含粒子和约束。复合体可以加入到一个组中,就像粒子和约
14、束一样。注意: 复合体中的成员彼此不能进行碰撞检测。属性:fixed:Boolean 读写 决定复合体的状态是否固定。设置这个值为true 或 false 将会设置复合体中所有组成的粒子的固定状态为true 或 false 。当复合体中的任何一个粒子的状态为不固定时,这个值返回的都为 false 。构造函数:public function Composite() 方法:rotateByAngle()方法public function rotateByAngle(angleDegrees:Number, center:Vector):void 围绕给定的中心,使复合体旋转参数指定的角度。rota
15、teByRadian()方法public function rotateByRadian(angleRadians:Number, center:Vector):void 围绕给定的中心,使复合体旋转参数指定的弧度。AbstractItem (子类有: AbstractConstraint和 AbstractParticle)所有约束和粒子的基类属性alwaysRepaint 属性alwaysRepaint:Boolean read-write 为了更好的运行,为了避免不必要的重绘,固定的粒子和弹性约束不需要调用他们的paint()方法, 当一个弹性约束的两端所连接的粒子是固定的话,那么这个弹
16、性约束被认为是固定的。这个属性设置为true 的时候,如果粒子和弹性约束的fixed 属性也为 true 的时候,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 粒子和弹性约束的paint ()方法会被强制调用。如果你想要旋转固定的粒子和弹性约束的话,你应该设置他们的repaintFixed属性为 true。如果粒子和弹性约束不是固定的话,alwaysRepaint属性是没有效果的。sprite 属性sprite:Sprite
17、 只读 为渲染和增加children 而提供的作为容器使用的Sprite 。当这个 sprite 第一次被请求时,这个 sprite 会自动的加入到APEngine类的全局容器中。visible 属性visible:Boolean 只写 决定这个项是否可见。构造函数AbstractItem () public function AbstractItem() 方法cleanup () 方法public function cleanup():void 当包含一个项目(粒子或约束)的组(组或复合体)从APEngine移除的时候,这个方法被自动的调用。init () 方法public function
18、 init():void 当包含一个项目(粒子或约束)的组(组或复合体)被加到引擎,一个项目(粒子或约束)的复合体被加到组,一个项目 (粒子或约束)被加到组或复合体的时候,这个方法会被自动的调用。paint () 方法public function paint():void 这个项目的默认的渲染方法。当APEngine.paint()方法被调用的时候会自动的调用这个方法。setFill () 方法public function setFill(color:uint = 0 xffffff, alpha:Number = 1):void 设置这个项的填充样式。setLine () 方法publi
19、c function setLine(thickness:Number = 0, color:uint = 0 x000000, alpha:Number = 1):void 设置这个项的样条线的样式。setStyle () 方法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - public function setStyle(lineThickness:Number = 0, lineColor:uint = 0 x00000
20、0, lineAlpha:Number = 1, fillColor:uint = 0 xffffff, fillAlpha:Number = 1):void 设置这个项的样条线和填充。AbstractParticle类(子类有: CircleParticle ,RectangleParticle)(父类是: AbstractItem )所有粒子的基类你不应该实例化这个类,而是应该使用这个类的子类。属性:center 属性center:Vector 只读 返回代表粒子当前位置的向量。collidable属性collidable:Boolean 读写 决定这个粒子是否能和其它的粒子或约束碰撞。默
21、认值为true 。elasticity 属性elasticity:Number 读写 这个粒子的弹性,标准的值在0 到 1 之间。值越大,弹性越大。在碰撞的过程中,弹性的值是累加的。如果一个粒子的弹性值设为0.4,另一个粒子的弹性制也设为0.4 ,那么在碰撞的时候弹性值就是0.8 了,这和一个粒子的弹性值是0 另一个弹性值是 0.8 产生的效果是一样的。设置大于1 的弹性值 (单个粒子大于1 或累加后大于1)将会使粒子获得比它原来更多的能量。(尽管现实中不可能,但是这是非常有意思的)fixed 属性fixed:Boolean 读写 决定粒子是否固定。如果粒子是固定的话,早受到力的作用和在碰撞过
22、程中将保持不动。固定的粒子非常适合用来模拟表面。friction 属性friction:Number 读写 粒子表面的摩擦系数。值必须在0 到 1 之间0 代表没有摩擦(理想光滑),1 代表完全的摩擦(像胶水一样)在碰撞中,摩擦系数也是累加的,但是被限制在1 到 0 之间。例如,如果两个粒子表面的摩擦系数都是0.7 的话,这两个粒子之间最终的摩擦力将会是1(完全的粘在一起)在当前的版本中,仅仅只考虑动态的摩擦。静态的摩擦在下一个版本中可能会得到支持。当前的版本有一个bug , 那就是当和摩擦系数大于0 且不固定的粒子碰撞时会得到错误的行为。一个解决的办法就是,只给固定的粒子设置摩擦系数。抛出错
23、误当摩擦系数的值小于0 或大于 1 时抛出ArgumentError 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - mass 属性mass:Number 只写 粒子的质量。大于0 的值均为有效值。默认情况下所有的粒子的质量均为1.质量属性和粒子形状的大小没有关系。抛出错误 当质量小于0 抛出 ArgumentError multisample属性multisample:int 读写 每一次循环中, 进行碰撞检测的中间位置值,
24、在一个快速移动的粒子中把这个值适当的设置大一些可以阻止穿透现象的发生。position属性position:Vector 读写 粒子的位置属性。为了一些目的,得到粒子的位置是非常有用的。当你获得粒子的位置的时候,你实际得到的是当前位置信息的一份拷贝。正因为这样, 你不能通过修改你从粒子取得的有关位置的向量(Vector ) 的 x 参数和 y 参数来改变粒子的位置。你必须这样做:position=new Vector(100,100),或者你可以用px 和 py 属性来代替。修改粒子位置的三种方法:改变他的位置(直接),给它设置速度,在它上面应用一个力。设置非固定粒子的位置并不同于把他的fix
25、ed 属性设置为true 那样简单。 一个处在它位置属性所指定位置的粒子的行为就好像它连接在一个0 长度的弹簧上一样。px 属性px:Number 读写 粒子的 x 坐标py 属性py:Number 读写 粒子的 y 坐标velocity 属性velocity:Vector 读写 粒子的速度。如果你想改变粒子的运动,你应该要么用这个属性,要么用addForce ()方法。一般来说,addForce() 方法慢慢的改变物体的运动状态,velocity 属性适合瞬间的给物体设置一个速度来改变物体的运动状态(例如抛出物体)。方法:addForce () 方法public function addFo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Java简单物理引擎 2022 Java 简单 物理 引擎
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内