文档库 最新最全的文档下载
当前位置:文档库 › flashAs3物理引擎APE中文帮助

flashAs3物理引擎APE中文帮助

flashAs3物理引擎APE中文帮助
flashAs3物理引擎APE中文帮助

APE,什么是APE呢。APE(Actionscript Physics Engine)是一个ActionScript3写成的物理引擎,用于模拟现实中物体发生的运动和碰撞。它是免费、开源的,遵循MIT协议。看起来特别适用用来做游戏开发,已经有许多很有趣的应用使用这个开发的。

官方网址为:https://www.wendangku.net/doc/8d14282869.html,/ape

下载地址为:https://www.wendangku.net/doc/8d14282869.html,/ape/ape_a045.zip(包含两个demo,api,swc文件,和源码)

APE中总共才12个类,用起来相当的方便。

AbstractCollection

Group

Composite

AbstractItem

AbstractConstraint

SpringConstraint

AbstractParticle

RectangleParticle

CircleParticle

WheelParticle

Vector

APEngine

下面具体介绍各个类的使用

◆AbstractCollection(子类有:Group和Composite)

此类为群组性的基类。你不应实例化这个类,而应该使用该类的子类。

属性:

constraints 属性

constraints:Array [只读]

一个数组,包含所有被加入到AbstractCollection中的AbstractConstraint类的实例。

particles 属性

particles:Array [只读]

一个数组,包含所有被加入到AbstractCollection中的AbstractParticle类的实例。

sprite 属性

sprite:Sprite [只读]

为渲染和增加children而提供的作为容器使用的Sprite。当这个sprite第一次被请求时,这个sprite会自动的加入到APEngine类的全局容器中。

构造函数:

public function AbstractCollection()

方法:

addConstraint () 方法

public function addConstraint(c:AbstractConstraint):void

在收集器中增加一个约束。

参数c:AbstractConstraint —被加入的约束.

addParticle () 方法

public function addParticle(p:AbstractParticle):void

在AbstractCollection中加入一个AbstractParticle

参数p:AbstractParticle —被加入的粒子

cleanup () 方法

public function cleanup():void

调用AbstractCollection每个成员的cleanup()方法. 当AbstractCollection 从他的父容器中被移除的话,cleanup()方法会自动的被调用。

getAll () 方法

public function getAll():Array

返回一个数组,这个数组包含被加入到AbstractCollection.中的每一个粒子和约束。

init () 方法

public function init():void

通过调用每一个成员的init()方法实例化这个AbstractCollection的每一个成员。

paint () 方法

public function paint():void

通过调用每一个成员的paint()方法来渲染AbstractCollection的每个成员。

removeConstraint () 方法

public function removeConstraint(c:AbstractConstraint):void

从收集器中删除参数指定的约束。

参数c:AbstractConstraint —将被移除的约束。

removeParticle ()方法

public function removeParticle(p:AbstractParticle):void

从AbstractCollection中移除一个AbstractParticle

参数p:AbstractParticle —将被移除的粒子

◆Group(继承自AbstractCollection)

组可以包含粒子,约束和复合体。组可以被设置为和其他的组进行碰撞检测。

属性:

collideInternal:Boolean [读写]

决定这个组内的成员彼此是否进行碰撞检测;

collisionList:Array [只读]

返回一个数组,这个数组包含所有和这个组进行碰撞检测的所有组的实例。

composites:Array [只读]

返回一个数组,这个数组包含所有加入到这个组的复合体。

构造函数

public function Group(collideInternal:Boolean = false)

Group是APE中的主要的用于组织的类。一旦创建了组,并把粒子,约束,复合体加入组,那么这些东西也就加入了APEngine。组可以包含粒子,约束和复合体。复合体只能包含粒子和约束。

参数:

collideInternal:Boolean (default = false)

方法:

addCollidable()方法

addCollidable(g:Group):void

加入一个组的实例与这个组进行碰撞检测。

addCollidableList()方法

public function addCollidableList(list:Array):void

加入AbstractCollection实例的数组,让数组中的元素与这个组进行碰撞检测。

addComposite()方法

public function addComposite(c:Composite):void

在这个组中加入复合体

cleanup()方法

public override function cleanup():void

调用组的cleanup()方法将会调用组中所有成员的cleanup()方法。当组从APEngine 引擎中移除时,组的cleanup()方法会自动的调用。

getAll()方法

public override function getAll():Array

返回一个包含组中所有粒子,约束,复合体的数组。

init()

public override function init():void

通过依次调用组中每个成员的init()方法来初始化组中的每个成员。

paint()方法

public override function paint():void

Paints 组中的所有成员. 这个方法由APEngine 类自动的调用。

removeCollidable()方法

public function removeCollidable(g:Group):void

从这个组的collidable list中移除一个组。

removeComposite()方法

public function removeComposite(c:Composite):void

从组中移除复合体。

Composite(继承自AbstractCollection)

复合体可以包含粒子和约束。复合体可以加入到一个组中,就像粒子和约束一样。注意:复合体中的成员彼此不能进行碰撞检测。

属性:

fixed:Boolean [读写]

决定复合体的状态是否固定。设置这个值为true或false将会设置复合体中所有组成的粒子的固定状态为true或false。当复合体中的任何一个粒子的状态为不固定时,这个值返回的都为false。

构造函数:

public function Composite()

方法:

rotateByAngle()方法

public function rotateByAngle(angleDegrees:Number, center:Vector):void

围绕给定的中心,使复合体旋转参数指定的角度。

rotateByRadian()方法

public function rotateByRadian(angleRadians:Number, center:Vector):void

围绕给定的中心,使复合体旋转参数指定的弧度。

AbstractItem(子类有:AbstractConstraint和AbstractParticle)

所有约束和粒子的基类

属性

alwaysRepaint 属性

alwaysRepaint:Boolean [read-write]

为了更好的运行,为了避免不必要的重绘,固定的粒子和弹性约束不需要调用他们的paint()方法,当一个弹性约束的两端所连接的粒子是固定的话,那么这个弹性约束被认为是固定的。这个属性设置为true的时候,如果粒子和弹性约束的fixed属性也为true 的时候,粒子和弹性约束的paint()方法会被强制调用。如果你想要旋转固定的粒子和弹性约束的话,你应该设置他们的repaintFixed属性为true。如果粒子和弹性约束不是固定的话,alwaysRepaint属性是没有效果的。

sprite 属性

sprite:Sprite [只读]

为渲染和增加children而提供的作为容器使用的Sprite。当这个sprite第一次被请求时,这个sprite会自动的加入到APEngine类的全局容器中。

visible 属性

visible:Boolean [只写]

决定这个项是否可见。

构造函数

AbstractItem ()

public function AbstractItem()

方法

cleanup () 方法

public function cleanup():void

当包含一个项目(粒子或约束)的组(组或复合体)从APEngine移除的时候,这个方法被自动的调用。

init ()方法

public function init():void

当包含一个项目(粒子或约束)的组(组或复合体)被加到引擎,一个项目(粒子或约束)的复合体被加到组,一个项目(粒子或约束)被加到组或复合体的时候,这个方法

会被自动的调用。

paint () 方法

public function paint():void

这个项目的默认的渲染方法。当APEngine.paint()方法被调用的时候会自动的调用这个方法。

setFill () 方法

public function setFill(color:uint = 0xffffff, alpha:Number = 1):void

设置这个项的填充样式。

setLine () 方法

public function setLine(thickness:Number = 0, color:uint = 0×000000, alpha:Number = 1):void

设置这个项的样条线的样式。

setStyle () 方法

public function setStyle(lineThickness:Number = 0, lineColor:uint = 0×000000, lineAlpha:Number = 1, fillColor:uint = 0xffffff, fillAlpha:Number = 1):void

设置这个项的样条线和填充。

AbstractParticle类(子类有:CircleParticle,RectangleParticle)(父类是:AbstractItem)

所有粒子的基类

你不应该实例化这个类,而是应该使用这个类的子类。

属性:

center 属性

center:Vector [只读]

返回代表粒子当前位置的向量。

collidable属性

collidable:Boolean [读写]

决定这个粒子是否能和其它的粒子或约束碰撞。默认值为true。

elasticity 属性

elasticity:Number [读写]

这个粒子的弹性,标准的值在0到1之间。值越大,弹性越大。

在碰撞的过程中,弹性的值是累加的。如果一个粒子的弹性值设为0.4,另一个粒子的弹性制也设为0.4,那么在碰撞的时候弹性值就是0.8了,这和一个粒子的弹性值是0另一个弹性值是0.8产生的效果是一样的。

设置大于1的弹性值(单个粒子大于1或累加后大于1)将会使粒子获得比它原来更多的能量。(尽管现实中不可能,但是这是非常有意思的)

fixed 属性

fixed:Boolean [读写]

决定粒子是否固定。如果粒子是固定的话,早受到力的作用和在碰撞过程中将保持不动。固定的粒子非常适合用来模拟表面。

friction 属性

friction:Number [读写]

粒子表面的摩擦系数。值必须在0到1之间

0代表没有摩擦(理想光滑),1代表完全的摩擦(像胶水一样)

在碰撞中,摩擦系数也是累加的,但是被限制在1到0之间。例如,如果两个粒子表面的摩擦系数都是0.7的话,这两个粒子之间最终的摩擦力将会是1(完全的粘在一起)

在当前的版本中,仅仅只考虑动态的摩擦。静态的摩擦在下一个版本中可能会得到支持。

当前的版本有一个bug,那就是当和摩擦系数大于0且不固定的粒子碰撞时会得到错误的行为。一个解决的办法就是,只给固定的粒子设置摩擦系数。

抛出错误

—当摩擦系数的值小于0或大于1时抛出ArgumentError

mass 属性

mass:Number [只写]

粒子的质量。大于0的值均为有效值。默认情况下所有的粒子的质量均为1.质量属性和粒子形状的大小没有关系。

抛出错误

—当质量小于0抛出ArgumentError

multisample属性

multisample:int [读写]

每一次循环中,进行碰撞检测的中间位置值,在一个快速移动的粒子中把这个值适当的设置大一些可以阻止穿透现象的发生。

position属性

position:Vector [读写]

粒子的位置属性。为了一些目的,得到粒子的位置是非常有用的。

当你获得粒子的位置的时候,你实际得到的是当前位置信息的一份拷贝。正因为这样,你不能通过修改你从粒子取得的有关位置的向量(Vector)的x参数和y参数来改变粒子的位置。你必须这样做:position=new Vector(100,100),或者你可以用px和py属性

来代替。

修改粒子位置的三种方法:改变他的位置(直接),给它设置速度,在它上面应用一个力。设置非固定粒子的位置并不同于把他的fixed属性设置为true那样简单。一个处在它位置属性所指定位置的粒子的行为就好像它连接在一个0长度的弹簧上一样。

px属性

px:Number [读写]

粒子的x坐标

py 属性

py:Number [读写]

粒子的y坐标

velocity属性

velocity:Vector [读写]

粒子的速度。如果你想改变粒子的运动,你应该要么用这个属性,要么用addForce()方法。一般来说,addForce()方法慢慢的改变物体的运动状态,velocity属性适合瞬间的给物体设置一个速度来改变物体的运动状态(例如抛出物体)。

方法:

addForce () 方法

public function addForce(f:Vector):void

给粒子加一个力。当应用这个方法的时候,粒子的质量也考虑在内了,所以对于模拟风之类的效果来说,这个方法是非常适合的。

参数f:Vector —代表被添加力的向量。

addMasslessForce () 方法

public function addMasslessForce(f:Vector):void

为粒子添加一个忽略质量的力。当用这个方法的时候,粒子的质量被忽略。在模拟类似于重力的力的情况,这个方法很适合。

参数f:Vector —代表被添加力的向量。

setDisplay () 方法

public function setDisplay(d:DisplayObject, offsetX:Number = 0, offsetY:Number = 0, rotation:Number = 0):void

在渲染粒子的时候,分配一个显示对象(DisplayObject)来使用。

update ()方法

public function update(dt2:Number):void

在APEngine.step()方法中会自动的调用update()方法。用这个方法整合粒子。

RectangleParticle——》AbstractParticle——》AbstractItem

矩形的粒子

属性

angle 属性

angle:Number [读写]

矩形粒子旋转的度数。

height 属性

height:Number [读写]

矩形粒子的高度。

radian 属性

radian:Number [读写]

矩形粒子旋转地弧度。

注:尽管矩形粒子可以被旋转,但是它没有角速度。换句话说,在碰撞中,旋转状态不会改变,因旋转而产生的能量也不会应用到碰撞中。

width 属性

width:Number [属性]

矩形粒子的宽度。

构造函数

RectangleParticle ()

public function RectangleParticle(x:Number, y:Number, width:Number, height:Number, rotation:Number = 0, fixed:Boolean = false, mass:Number = 1, elasticity:Number = 0.3, friction:Number = 0)

参数

x:Number —初始x位置

y:Number —初始y位置

width:Number —这个粒子的宽度

height:Number —这个粒子的高度

rotation:Number (default = 0) —这个粒子旋转的弧度.

fixed:Boolean (default = false) —决定这个粒子是否固定。固定的粒子不受力和碰撞的影响,非常适合作为平面。不固定的粒子受力和碰撞的作用自由的移动。

elasticity:Number (default = 0.3) —粒子的弹性. 值越高弹性越大

friction:Number (default = 0) —粒子表面的摩擦系数

注意:固定的粒子仍然可以改变它的旋转属性。

方法

init () 方法

public override function init():void

建立矩形粒子的视觉表象,当这个矩形粒子的父组(包含该粒子的组)的实例被加到APEngine中、矩形粒子的复合体被加入到组中、矩形粒子被加入到组或复合体中的时候,这个方法会自动的被调用。

paint () 方法

public override function paint():void

这个矩形粒子默认的渲染方法,这个方法会被APEngine.paint()方法自动的调用。

如果你想要自己定义渲染方法,你可以创建这个类的一个子类,并在子类中覆盖paint ()方法。

CircleParticle——》AbstractParticle——》AbstractItem

子类:WheelParticle

圆形粒子

属性

radius 属性

radius:Number [读写]

粒子的半径

构造函数

CircleParticle () 构造器

public function CircleParticle(x:Number, y:Number, radius:Number, fixed:Boolean = false, mass:Number = 1, elasticity:Number = 0.3, friction:Number = 0)

参数:

x:Number —这个粒子的初始x位置.

y:Number —这个例子的初始y位置.

radius:Number —粒子的半径.

fixed:Boolean (default = false) —决定这个粒子是否固定。

elasticity:Number (default = 0.3) —粒子的弹力,值越大弹力越大。

friction:Number (default = 0) —粒子表面的摩擦力。

方法

init () 方法

public override function init():void

建立圆形粒子的视觉表象,当这个圆形粒子的父组(包含该粒子的组)的实例被加到APEngine中、圆形粒子的复合体被加入到组中、圆形粒子被加入到组或复合体中的时候,这个方法会自动的被调用。

paint () 方法

public override function paint():void

这个粒子默认的渲染方法,这个方法会被APEngine.paint()方法自动的调用。

如果你想要自己定义渲染方法,你可以创建这个类的一个子类,并在子类中覆盖

WheelParticle ——》CircleParticle ——》AbstractParticle ——》AbstractItem

用于模拟轮子行为的粒子

属性

angle 属性

angle:Number [只读]

轮子旋转的角度

angularVelocity 属性

angularVelocity:Number [读写]

轮子粒子的角速度。你可以通过修改这个值使轮子粒子旋转起来。

radian 属性

radian:Number [只读]

轮子旋转的弧度

speed 属性

speed:Number [读写]

轮子粒子的速度,你可以通过修改这个值使轮子旋转。

traction 属性

traction:Number [读写]

在碰撞中牵引力的大小。这个属性决定了当轮子粒子和其它的粒子接触是到底有多少牵

引力作用在轮子粒子上。如果这个值设为0,将不会有牵引力,就好像与轮子接触的平面是完全光滑的那样。这个值应该在0到1之间。

注意:frection(摩擦系数)和traction(牵引力)的行为是不同的。当轮子粒子在一个摩擦系数非常打的平面运动时,轮子粒子的运动速度将非常慢,好像平面上涂满了胶水。

构造函数

WheelParticle () 构造器

public function WheelParticle(x:Number, y:Number, radius:Number, fixed:Boolean = false, mass:Number = 1, elasticity:Number = 0.3, friction:Number = 0, traction:Number = 1)

参数:

x:Number —初始x位置

y:Number —初始y位置.

radius:Number —粒子的半径.

fixed:Boolean (default = false) —决定这个粒子是否是固定的。

mass:Number (default = 1) —粒子的质量

elasticity:Number (default = 0.3) —粒子的弹力。值越大塔里越大。

friction:Number (default = 0) —粒子表面的摩擦力。

traction:Number (default = 1) —粒子表面的牵引力。

注:固定的轮子粒子也可以自由度旋转

方法

init ()方法

public override function init():void

建立粒子的视觉呈现。当粒子被加入到引擎时这个方法自动被调用。

paint () 方法

public override function paint():void

这个粒子默认的渲染方法。在快速的测试中你应该仅仅用这个默认的paint()方法。如果你有自己的特殊的要求,你应该自己写一个类,要么让这个类继承APE中的粒子或约束,要么把他们组合在一起。然后在你自己的类中定义你自己的渲染方法。

update () 方法

public override function update(dt:Number):void

AbstractConstraint(父类是:AbstractItem)(子类有:SpringConstraint)

你不应实例化这个类,而应该使用它的子类。

属性

stiffness 属性

stiffness:Number [read-write]

是约束变得僵硬,值越大越僵硬。这个值应该在0到1之间。根据运行的情况,这个直设的过高会导致应用不稳定。

SpringConstraint——》AbstractConstraint ——》AbstractItem

一个像弹簧的约束,用来连接两个物体。

属性

angle属性

angle:Number [只读]

连接在这个SpringConstraint(弹簧约束)上的两个粒子的位置所构成的角度。你可以在渲染方法中应用这个属性和center属性。

center 属性

center:Vector [只读]

连接在这个SpringConstraint(弹簧约束)上的两个粒子的位置的中心。你可以在渲染方法中应用这个属性和旋转属性。

collidable 属性

collidable:Boolean [只读]

决定两个粒子之间的区域是否接受碰撞检测。如果这个属性打开的话(即为true),你可以修改rectHeight属性和rectWidth属性来修改接受碰撞检测区域的尺寸大小。

currLength 属性

currLength:Number [只读]

返回弹簧约束(SpringConstraint)的长度,即两个被链接的粒子的距离。

fixed 属性

fixed:Boolean [只读]

如果被链接的两个粒子的fixed属性都为true时返回true。

fixedEndLimit 属性

fixedEndLimit:Number [读写]

当弹簧约束(SpringConstraint)为可接受碰撞的并且两端的粒子只有一个是固定的,这个值将处理固定端粒子附近的碰撞,纠正难以解决的碰撞问题。这个值在0.0到1.0之间。

radian 属性

radian:Number [只读]

连接在这个SpringConstraint(弹簧约束)上的两个粒子的位置所构成的旋转的值。你可以在你自定义的渲染方法中应用这个属性和center属性。

rectHeight 属性

rectHeight:Number [读写]

如果collidable属性为true,你可以设置这两个粒子之间能接受碰撞的矩形区域的高度。这个值是大于零的。如果你设置这个值为10,那么碰撞区域矩形的高度为10像素,这个高度与两个连接的粒子的连线垂直的。

rectScale属性

rectScale:Number [读写]

如果collidable属性为true,你可以设置这两个粒子之间能接受碰撞的矩形区域的缩放。有效值在0到1之间。如果你将值设为1,这个碰撞区域将扩展到来被链接的两个粒子处。设置一个较低的值,会使碰撞区域按距离的百分比缩放。这个值设的过大会使碰撞矩形扩张甚至超过两端的粒子。

restLength 属性

restLength:Number [读写]

restLength 属性设置弹簧约束(SpringConstraint)的长度。如果两端的粒子位置没有因受到外力而改变的话,那么这个属性的值等于两端粒子的距离。弹簧约束将总是试着使两个粒子的距离等于这个属性的值。这个值必须大于0.

构造函数

SpringConstraint ()

public function SpringConstraint(p1:AbstractParticle, p2:AbstractParticle, stiffness:Number = 0.5, collidable:Boolean = false, rectHeight:Number = 1, rectScale:Number = 1, scaleT oLength:Boolean = false)

参数:

p1:AbstractParticle —约束所连接的第一个粒子。

p2:AbstractParticle —约束所连接的第二个粒子。

stiffness:Number (default = 0.5) —弹簧的强度。有效值在0到1之间。低值的效果就像软弹簧,高值的效果如同硬弹簧。

collidable:Boolean (default = false) —决定此约束是否接受碰撞检测。

rectHeight:Number (default = 1) —如果这个约束是可接受碰撞检测的,可碰撞的区域的高度可设置为像素值。高度和被链接的两个粒子的连线垂直。

rectScale:Number (default = 1) —如果这个约束是可接受碰撞检测的,可被碰撞的区域的缩放可被设置为一个0到1之间的值。这个缩放是两个被链接的粒子之间的距离的一个百分数。

scaleToLength:Boolean (default = false) —如果这个约束是可接受碰撞检测的并且这个

值设为true时,可接受碰撞的区域将随着两个粒子的距离而缩放。

方法

init ()方法

public override function init():void

建立弹簧约束的视觉呈现。当此弹簧约束的父组的实例被加到APEngine中、此弹簧约束的复合体被加到组中、次弹簧约束被加到复合体或组中的时候,这个方法会自动的被调用。

isConnectedTo () 方法

public function isConnectedTo(p:AbstractParticle):Boolean

如果传递给此函数的参数是被链接的两个粒子之一则返回true。

参数p:AbstractParticle

返回Boolean

paint () 方法

public override function paint():void

这个约束的默认渲染方法。这个方法由APEngine.paint()自动的调用。如果你想要自定义渲染方法,你可以创建一个这个类的子类,并在子类中覆盖paint()方法。

setCollidable ()方法

public function setCollidable(b:Boolean, rectHeight:Number, rectScale:Number, scaleToLength:Boolean = false):void

参数:

b:Boolean

rectHeight:Number

rectScale:Number

scaleToLength:Boolean (default = false)

setDisplay ()方法

public function setDisplay(d:DisplayObject, offsetX:Number = 0, offsetY:Number = 0, rotation:Number = 0):void

当渲染这个约束时分配一个显示对象以备使用。

参数

d:DisplayObject

offsetX:Number (default = 0)

offsetY:Number (default = 0)

rotation:Number (default = 0)

Vector类

属性

x 属性

public var x:Number

y 属性

public var y:Number

构造函数

Vector () constructor

public function Vector(px:Number = 0, py:Number = 0) 参数:

px:Number (default = 0)

py:Number (default = 0)

方法

copy () 方法

public function copy(v:Vector):void

参数:

v:Vector

cross () 方法

public function cross(v:Vector):Number

参数

v:Vector

返回:

Number

distance () 方法

public function distance(v:Vector):Number

参数:

v:Vector

返回

Number

divEquals ()方法

public function divEquals(s:Number):Vector 参数

s:Number

返回

Vector

dot () 方法

public function dot(v:Vector):Number

参数:

v:Vector

返回:Number

magnitude ()方法

public function magnitude():Number

返回:Number

minus () 方法

public function minus(v:Vector):Vector

参数:

v:Vector

返回

Vector

minusEquals ()方法

public function minusEquals(v:Vector):Vector 参数:

v:Vector

参数

Vector

mult ()方法

public function mult(s:Number):Vector

参数:

s:Number

返回

Vector

multEquals () 方法

public function multEquals(s:Number):Vector

参数

s:Number

返回

Vector

normalize ()方法

public function normalize():Vector

返回

Vector

plus () 方法

public function plus(v:Vector):Vector

参数

v:Vector

返回

Vector

plusEquals () 方法

public function plusEquals(v:Vector):Vector

参数

v:Vector

返回

Vector

setTo () 方法

public function setTo(px:Number, py:Number):void 参数

px:Number

py:Number

times () 方法

public function times(v:Vector):Vector

参数:

v:Vector

返回

Vector

toString () 方法

public function toString():String

放回

String

APEngine这是一个静态的类,所以里面的所用的属性和方法都是静态的。

属性:

constraintCollisionCycles属性

constraintCollisionCycles:int (读写)

决定在一个APEngine.step()中约束条件和位置更正的次数,这个参数能很好的增加系统的稳定性和阻止穿透现象,尤其是在约束和粒子比较复杂的情况中。这个数字越大,系统越稳定,当然消耗的资源也比较多。

此属性和constraintCycles属性的不同之处在于它在一个APEngine.step()中同时解决了Constraints和collisions。此属性的默认值是1.

constraintCycles属性

constraintCycles:int(读写)

此属性的默认值是0,和constraintCollisionCycles属性类似,不同之处在于它只解决约束问题。

container属性

container:DisplayObjectContainer(读写)

粒子和约束的painting方法默认的容器。如果你要用到内建的painting方法,你必须首先设置它。

damping属性

damping:Number(读写)

全局的阻力,值在0到1之间。值越大阻力越小,当值为一时,没有阻力。当值为0时,所有的粒子都不能运动了(因为阻力太大了)。默认值为1.

damping会减慢你的模拟速度使你的模拟更稳定。如果你发现你的模拟出现跑飞现象,试着更正damping的值。

方法:

addForce()方法

addForce(v:Vector):void

给系统中的所有粒子增加一个力。当用这个方法的时候,粒子的质量也会考虑在内,它在模拟系统中类似风的力是非常有效的。质量大的物理受这个力的影响将小于质量小的物体。注意:物体的尺寸不影响物体的物理行为。

参数:v:Vector——一个矢量,用来代表加入到系统中的力。

addGroup()方法

addGroup(g:Group):void

参数g:Group

addMalllessForce()方法

addMalllessForce(v:Vector):void

为系统中的所有粒子增加一个无质量的力,在用这个方法的时候,粒子的质量不考虑在内。用它来模拟类似于重力的力是非常有效的。

参数:v:Vector——一个矢量,用来代表加入到系统中的力

init()方法

init(dt:Number=0.25):void

初始化引擎,在你增加任何粒子和约束之前必须调用这个方法。

参数:默认值为1/4,经典的取值为1/3或1/4。这是引擎的时间间隔值。这个值和step()方法共同决定了模拟的速度。这个值越低,模拟的速度越低,但是更精确,这个值越高,模拟的速度也越快,但是不精确。注意:这个值只影响粒子所受的力,如果你没有加入力的话,这个值是无关紧要的。

paint()方法

paint():void

调用这个方法将会依次的调用粒子和约束的paint()方法。通常你要在主程序的循环中调用这个方法。

step()方法

step():void

引擎的主要函数,持续不断的调用这个函数才能使模拟不断的进行下去。这个方法被调用的频率越快,模拟的速度也越快。

国内5款自主研发的游戏引擎介绍

国内5款自主研发的游戏引擎介绍 游戏引擎是指可以用于游戏制作,开发,编辑功能的应用程序,它需要提供场景空间建设,图像渲染生成,物理逻辑建设,碰撞穿透检测,音乐音效支持,动画渲染播放,网络网关联通等等各个功能引擎的集合管理式程序。 面对发展越来越快的全球游戏市场,国内很多游戏厂商也开始尝试自主研发游戏引擎。目前国内网络游戏市场在基础研发实力上,已经具备了相对成熟的研发经验与比较优良的游戏研发引擎。下面为大家介绍的这几款国内厂商自主研发并拥有自主知识产权的网络游戏引擎,都具有各自的特色。 一、《九阴真经》全新3D引擎Flexi Flexi引擎是一套完全由蜗牛自主开发、为研发“真武侠觉醒”巨作《九阴真经》而精心量身打造的全新3D游戏开发架构,该引擎包含游戏客户端、服务器、内容编辑工具,支持高端开发团队的基础项目建设。Flexi引擎的架构设计能够兼容多种需求,在研发的过程中也参考了大量的图形学论文,同时包含了很多蜗牛公司创新的设计,是一款实实在在的国产3D引擎。 二、完美时空的Angelica引擎 由完美时空公司自主研发并拥有自主知识产权的游戏引擎Angelica,自推出之日起,就从来没有停止过自身的改进情况,推出了包括《武林外传》、《完美世界》、《诛仙》等网络游戏,号称采用了Angelica 2.0开发的《赤壁》更是博得了众多好评。其后的休闲网游《热舞派对》、3D飞天网游《口袋西游》也采用了此游戏引擎。《完美世界》更是成为了第一款进军韩国网络游戏市场的国内网络游戏产品。 三、游艺道游戏引擎 游艺道是一家专业的游戏引擎研发商,其自主研发的游艺道游戏引擎拥有5年以上的技术积累,经历过多款成功产品的上市运营验证,历经多年迭代,功能丰富,底层架构稳定。该引擎提供开放式的前端接口、后端引擎及丰富的游戏模板,拥有开放、多变的特性。其操作简单,使用鼠标“拖、拉、拽”便可对游戏中的内容进行任意创意组合。同时,它支持在同一引擎基础上开发出多类型的游戏产品如棋牌类、塔防类、休闲类等。 四、金山的剑网3引擎 金山凭借自己的研发实力,完全自主研发,获得国家863计划支持的图形3D引擎,经过不断的完善3D引擎的功能和效果,《剑网3》的即时演算效果已经达到了电影水准。从游戏截图可以看到,草地树木岩石的细节表现、林间的光影效果、水面的动态引擎技术,都已经达到了国内网游的顶级水准。 五、《功夫英雄》的Dominancen引擎 《功夫英雄》使用的由空中网大承网络自主研发,具有完全知识产权的第三代次世代画面引擎Dominancen(支配)。该引擎完全由国人自主研发,自04年起至今,历经近7年,投入近5000万,画面效果堪比国际顶级引擎,但同时更适合中国网游玩家的需要,低配高效,单组服务器能同时容纳万人同时在线。

Unity物理引擎系统里两个常用组件- Rigidbody、Collider

Unity物理引擎系统里两个常用组件- Rigidbody、Collider 什么是Collider 碰撞器组件在Unity引擎中触发物理碰撞的最基本的条件。 可以这样说,假如一个游戏中没有物理碰撞系统是不可能的。 什么是Rigidbody 通过物理模拟的控制对象的位置。 Rigidbody组件添加到一个对象将其运动的控制下统一的物理引擎。即使没有添加任何代码,Rigidbody对象将由重力向下拉,将反应与传入的对象如果正确的对撞机碰撞组件也存在。 Rigidbody也有脚本API,允许您力量应用于对象和物理现实的方式控制它。例如,一辆汽车的行为可以指定在力量方面应用的轮子。鉴于这种信息,物理引擎可以处理大多数汽车运动的其他方面,所以它将加速实际和正确应对冲突。 通常会在脚本的FixedUpdate函数中改变Rigidbody设置。原因是防止在更新时时间不配合帧更新的步骤。 FixedUpdate称为每个物理之前立即更新,所以任何更改将会有直接处理。 开始使用Rigidbody时常见的问题是,游戏中模拟的物理系统似乎在“慢运动”运行。这实际上是由于规模用于您的模型。默认的重力设置假设一个世界单元对应于一米的距离。与非现实的游戏,是没有多大的区别,如果您的模型都是100单位长但使用物理时,他们将被视为非常大的对象。如果大规模用于对象应该是小,他们似乎会非常缓慢——物理引擎认为他们非常大对象摔

倒非常大的距离。考虑到这一点,一定要保持你的对象在现实生活中或多或少的规模(所以汽车应该大约4单位= 4米)。 Collider的用法 碰撞器常用的方法 ?OnCollisionEnter //当另一个游戏对象的刚体或者碰撞器,碰撞到本游戏对象的碰撞器组件时,会调用这个方法... Collider.OnCollisionEnter(Collision) 例如:

游戏引擎设计报告

游戏引擎课程设计 设计题目飞机大战游戏课程设计学院名称信息科学与技术学院 专业名称数字媒体技术 学生姓名罗瑞佳 学生学号201413050133 任课教师林杰 设计(论文)成绩 教务处制 2015年12月29日

飞机大战游戏课程设计 摘要 本飞机大战游戏采用2D游戏显示界面,于Unity3D的游戏引擎相结合而制作完成的游戏,使用的代码是c#语言,游玩时采用第三人称视角,用键盘操作,背景界面和UI采用星球大战的画面模式。采用计分系统来统计玩家的成就,使游戏更具可玩性。 关键词:2D;粒子效果;碰撞检测 第一章游戏的素材准备 1.1 制作该游戏需要设置飞机、敌人和子弹的模型,还有 游戏音效,游戏贴图素材,以及游戏场景的构思和搭建等。 1.2进行搭建场景时分为: 1)进入游戏的界面搭建 2) 游戏加载的界面搭建 3)游戏主界面搭建 4)游戏结束的界面搭建 5)游戏菜单的界面搭建

第二章进行飞机的功能操作 2.1 飞机模型的创建及移动功能的实现 2.2 飞机发射子弹的创建 1)飞机子弹的基本功能 2)飞机子弹发射时的音效实现 2.3敌人的创建 2.4子弹与敌人的碰撞检测 2.5子弹飞机的爆炸效果 2.6玩家生命值和分数的设定 1)玩家的死亡 2)玩家输游戏场景的设定 3)玩家赢游戏场景的设定 第三章背景设置 3.1 修改输赢场景的背景 3.2滚动背景的搭建修改 3.3修改敌人和玩家的外形

3.4关于玩家飞船的重生 3.5游戏难度的设定 四重要代码 4.1关于粒子碰撞检测的代码 #pragma strict varpowerUpSound : GameObject; function Start () { } function Update () { } function OnTriggerEnter(col:Collider)//碰撞检测 { if(col.gameObject.tag == "Player") { GameObject.Find("player").GetComponent(FireScript).PowerUpLaser(); Instantiate(powerUpSound,transform.position,transform.rotation); Destroy(gameObject); } }

游戏引擎:cocos游戏开发引擎介绍

游戏开发引擎笑傲群雄 2015年1月8日,享有游戏界“奥斯卡”美誉的“金翎奖”2014年度优秀游戏评选大赛在厦门如期举行。Cocos游戏斩获多项大奖、全面开花,获得了业界、媒体以及玩家的多重肯定。Cocos也成了此次大会获奖作品里使用率最高的手游引擎,再度证明了其不俗实力。 游戏引擎Cocos游戏全面开花行业大佬纷纷“表白” 此次金翎奖大会上,采用cocos引擎的国内主流游戏厂商一一亮相,腾讯游戏、网易游戏、完美世界、飞鱼科技、游族网络、乐动卓越、雷霆游戏等汇聚一堂,cocos游戏也在移动类游戏奖项里取得了大丰收。 其中,游戏引擎cocos游戏在极具分量的“玩家最喜爱的网络移动游戏”大奖中占比高达70%,继续一如既往的霸榜传说。《刀塔传奇》《我叫MT》《秦时明月》《雷霆战机》《放开那三国》《魔

力宝贝手游》《大掌门》七大cocos精品游戏可谓实至名归。 惊喜不仅如此。Cocos游戏《刀塔传奇》《暖暖环游世界》《囧西游》《血族》被评为“最佳原创移动游戏”;《捕鱼达人3》《别踩白块儿》《消灭星星官方正版》获得了“玩家最喜爱的单机移动游戏”;《姜饼人酷跑》《天天富翁》赢得“最佳境外移动游戏”;《怪物弹珠》《女神联盟》则众望所归地捧走了“玩家最期待的移动网络游戏”大奖。

(游族网络高级副总裁方师恩) 游戏引擎游族网络高级副总裁方师恩在采访时对cocos引擎给予了高度评价:“Cocos引擎效率高,工具完善,实力强,人才积累也有优势。从上述方面考虑,cocos引擎确实是相当不错的选择。”方总同时透露,团队一直都在关注cocos引擎配套工具产品如Cocos Studio、AnySDK、Cocos Play的发展,并充满了期待。

unity3d-物理引擎

unity3d-物理引擎 简介 物理引擎就是在游戏中模拟真实的物理效果,比如,场景中有两个立方体对象,一个在空中,一个在地面上,在空中的立方体开始自由下落,然后与地面上的立方体对象发生碰撞,而物理引擎就是用来模拟真实碰撞的效果。 如果需要让模型感应物理引擎的效果,需要将刚体组件或角色控制器组件添加至该对象中。 刚体(Rigidbody) 刚体是一个非常重要的组件,新创建的物体默认情况下是不具有物理效果的,而刚体组件可以给物体添加一些常见的物理属性,比如物体质量、摩擦力和碰撞参数等,这些属性可用来真实的模拟该物体在3D游戏世界中的一切行为。 下面我们在unity中创建一个plane(平面),两个cube(立方体), 蓝色cube默认状态是没有rigidbody, 给红色cube添加刚体组件,选择要添加刚体的对象, 通过“Component—>Physics—>Rigidbody”或者在Inspector窗口,选择“AddComponent—>Physics—>Rigidbody ”

运行后可以发现,添加了刚体的红色cube感应到了物理效应,会从空中落下。而蓝色cube 依然是静止不动的

可以看到Inspector可以看到Rigidbody包含的属性,简单的看下几个属性的含义,详细的可以看手册

力 力是物理学中一个非常重要的元素,其种类有很多,刚体组件可以受力的作用, 比如给刚体施加一个X轴方向的力,那么该刚体绑定的物体将沿X轴方向向前移动, 这就好比用力将物体仍出去一样,该物体会以抛物线的形式移动,而不是呆板的做匀速平移。 力的方式有两种 1:普通力,通过设定里的方向和大小,相当于把力施加在物体的重心上。

中国游戏引擎行业现状

中国游戏引擎行业现状 游戏引擎作为游戏开发的中间件已经被国外游戏厂商广泛接受,但是在国内,引擎行业却仍处于起步阶段,甚至有些不上不下的尴尬。实力雄厚的大开发商大多有自已的引擎队伍,初出茅庐的中小企业对于那些天价的引擎却又望而却步。另外,除了资金上的考虑,在对待引擎的态度上,国内企业也多表现得保守,认为核心技术还是由自己掌握比较稳妥。为了理清产业脉络,让大家更多地参与到产业发展的讨论中来,本期专题企划我们特别邀请到了业内的一些资深技术专家,请他们谈谈自己对引擎及引擎行业的一些见解和看法。 Q:你觉得中国公司目前自主研发(包括公司内部自用和国产商用)的游戏引擎技术实力究竟如何? A :王斌:国外游戏市场主要以单机(视频和PC)为主,在引擎表现上也主要追求高端效果,国内与国外引擎在高端效果表现的技术上肯定是存在差距的。但我认为国外引擎在低端和对国内网游的特殊支持上做得不一定那么出色,比如现在网游换装普遍使用的“纸娃娃”(Avatar)系统,国外的引擎也大多支持,但支持起来不那么直接,可能还需要对其进行改动;另外,我们的客户可能提出“双开”(同一个游戏的两个进程)和“单独的聊天窗口”之类的需求,我想国外引擎公司恐怕很难在这方面投入开发力量来满足此类国内特有的客户需求。 姚晓光:国内很多公司都曾尝试开发过3D游戏,例如盛大网络的《神迹》、目标的《傲世三国》、完美时空的《完美世界》等等,从这些作品可以看出,国内自己研发的3D引擎的技术实力,也可证明这些引擎是能够商业化的。 张泽湘:目前国内自主研发引擎的最大不足之处在于不成熟,这种不成熟体现在了工具、硬件兼容性、性能以及功能的完整性等诸多方面,但大量使用自主研发引擎开发出的商业产品的成功,用实践证明了使用自主研发引擎也是一个不错的选择。叶展:我觉得国内公司所开发的引擎以自用为主,作为自用的引擎,它们是成熟的,因为目前市场上有很多使用这些引擎开发出来的成功产品,但如果将其拿出来作为通用的商业引擎,可能还不太成熟。因为自用引擎是一个游戏的附带产品,很多地方仅仅是以满足单一项目的需求为目标;而通用的商用引擎则是一个高度专业的独立技术产品,在很多地方会更精雕细琢,精益求精,在兼容性、灵活性,适用性,可靠性上更好。 郭磊:目前中国公司自主研发的游戏引擎技术实力整体来说还是非常低的,原因主要是经验和心态。研发游戏引擎是一个庞大而系统的软件工程,和做学问一样,是需要花时间去钻研和埋下头去实干的。而目前多数的研发型公司几乎都是在短短两三年内就拿出了所谓世界一流水平的游戏引擎,甚至是基于这个引擎的游戏产品,这实际是一个态度的问题。张健:相较于国外,国内的游戏开发时间还不长,其中在业内资格较老的公司经历了单机到网络,2D到3D的转变。历史较短的公司则一般直接以网络游戏作为起步。国内的2D休闲游戏的开发已经比较成熟了,无论是服务器端还是客户端,不少公司都拥有自己自主研发的2D 休闲游戏引擎。国内3D游戏引擎的水平还不高,目前在国内市场中,使用自主研发3D游戏引擎开发出来的非常成功的游戏案例也是凤毛麟角。游戏引擎的技术实力和成熟度体现在最终使用引擎的产品上,从这个角度说,目前国内自主

3D游戏引擎的设计架构

3D游戏引擎的设计架构 Introduction (简介) 让咱们谈谈你如何撰写一份提供优雅性能的3D引擎。你的引擎需要提供的包括:曲面(curved surfaces)、动态光线(dynamic lighting)、体雾(volumetric fog)、镜面(mirrors)、入口(portals)、天空体(skyboxes)、节点阴影(vertex shaders)、粒子系统(particle systems)、静态网格模型(static mesh models)、网格模型动画(animated mesh models)。假如你已经知道如何以上所述的所有功能顺利工作,你也许便能将那些东东一起置入到一个引擎当中。 等等!在你开始撰写代码前你必须先构思一下如何去架构你的引擎。多数来讲,你一定是迫切地渴望去制作一个游戏,但如果你立即投入便开始为你的引擎撰写代码后,你一定会觉得非常难受,开发后期你可能会为置入新的特效与控制而不得不多次重写大量的局部代码,甚至以失败而放弃告终。花一点时间好好地为你引擎深谋远虑一番,这将会为你节省大量时间,也少一点头痛。你一定不会急切地去架构一个巨型的工程;或许你也会在引擎未完成时而干脆放弃它,然后去干的别的什么事儿。好了,当你掌握学习你所需知识的方式之前,也许你还不能完成那些事儿。将设计真正地完成确实是件美事,为之你会感觉更好,你将为之而耀眼! 让我们分析一下具备完整功能的3D游戏引擎的需要哪些基本部件。首先,这为具有相应3D经验但且还需一些指引的开发者提供了一些信息。这是一些并不难且能快速掌握但是你必须应用的内容条目。为将你的工作更好地进行下去,这里将对关于“把多大的工作量”与“多少部分”置入一个游戏引擎给出一个总概。我把这些成分称为系统(System)、控制台(Console)、支持(Support),渲染/引擎内核(Renderer/Engine Core)、游戏介质层(Game Interface)、以及工具/数据(Tools/Data)。 Tools/Data (工具/数据) 在开发过程中,你总是需要一些数据,但不幸的是这并不象写文本文件或是定义一个立方体那么简单。至少,你得需要3d模型编辑器,关卡编辑器,以及图形程序。你可以通过购买,也可以在网上找一些免费的程序满足你的开发要求。不幸的是你可能还需要一些更多的工具可你却根本无法获得(还不存在呢),这时你只得自己动手去写。最终你很可能要自行设计编写一个关卡编辑器,因为你更本不可能获得你所需。你可能也会编写一些代码来为大量的文件打个包,整天面对应付成百上千个文件倒是非常痛苦的。你还必须写一些转换器或是插件将3d模型编辑器的模型格式转换成你自己的格式。你也需要一些加工游戏数据的工具,譬如可见度估算或是光线贴图。 一个基本的准则是,你可能要为设计工具而置入比游戏本身等量甚至更多的代码。开始你总能找到现成的格式和工具,但是经过一段时间以后你就能认识到你需要你的引擎有很大的特性,然后你就会放弃以前的撰写方式。

iH5开创国内首个可视化物理引擎!打造超真实的重力和弹力效果!

iH5开创国内首个可视化物理引擎!打造超真实的重力和弹力效果! 最近,H5界一向和平共处的小球、冰块和碗打起了架,小编我忍不住吃了一“鲸”,这年代,碰瓷还敢当着iH5的面? 据说这一切都是因为一个叫物理引擎的玩意儿…… 物理引擎是什么? 物理引擎是一种仿真程序,可用来创建一种虚拟环境,在其中集成来自物理世界的规律。在这个虚拟的环境中包括的物体,除了物体之间的相互作用(比如碰撞)外,还包括施加到它们身上的力(比如重力)。物理引擎可在仿真环境内模拟牛顿物理学并处理这些力和相互作用。 (小球OS:简单点说,我虽住在虚拟空间,但别以为我只是一张图,我也可以是个有重力、敢碰撞的勇敢的ball!) 为什么要用物理引擎? 让H5中的物体可以像真实世界中的物体一样运动、碰撞,其作用在H5游戏中表现尤为突出,iH5能利用物理引擎打造属于自己的物理世界。

物理引擎所需的工具有哪些? 1、画布:物理引擎需要配合iH5的画布功能使用,因此使用前应先在iH5编辑器舞台下添加一个舞台大小的画布(640*1040)。(必备) 2、物理世界:定义整个物理虚拟世界的属性。(必备) 3、物体:定义画布中各实物的物理属性。(选择项) 4、碰撞探测器:检测物体之间是否产生了碰撞。(选择项) 以下重点介绍物理世界、物体和碰撞检测器三种工具。Are you ready?Go! 1、物理世界:定义整个物理虚拟世界的属性 操作步骤:在iH5编辑器功能画布下添加“物理世界”工具即可。 重要属性介绍: (1)水平方向重力:默认为0,设置其他数值后物体在水平方向上会有重力偏向。 (2)垂直方向重力:重力越大,物体下落速度越快。(水平方向重力、垂直方向重力均设为0,可以模拟出无重力的太空效果)

游戏引擎发展史(下)

[11.再接再厉―Unreal2引擎] Unreal引擎一炮打响,EPIC又再接再厉推出了Unreal2引擎。相比第一代Unreal引擎,Unreal2的全部代码几乎重写,并集成了最新的编辑器。随着游戏开发的需要,游戏引擎的内涵也在不断扩大,Unreal2引擎拥有了更多的功能。 《Unreal 2》虚幻2的画面 当时物理加速技术已然成形,Unreal2引擎便集成了Karma 物理加速技术开发包,引擎中的物理效果得以增强,并且开始支持XBOX、PS2等主机平台。Unreal2引擎期间有过一次小幅升级,被称为UE2.5,渲染性能有了一定提高。

这张Unreal 2的看起来更漂亮一些 有了第一代引擎的铺垫,采用Unreal2及其升级型引擎的游戏数量也大幅提高,其中的知名游戏包括《汤姆?克兰西之细胞分裂2:明日潘多拉》、《部落:复仇者》、《越战英豪》、《天堂2》、《杀手13》、《彩虹六号:雅典娜之剑》、《荒野大镖客》、《虚幻竞技场2003》、《手足兄弟连》等等。

《天堂2》的画质在当时的网游中可以说是傲视群雄 [12.功成名就―Unreal3引擎] 到了DX9时代,EPIC公司的Unreal2引擎便跟不上时代了,急需一款性能更强大、灵活性更高的新时代引擎,这便是EPIC当前的主力干将―Unreal3引擎。融合了众多新技术、新特性的Unreal3也是当前使用最广泛的引擎之一,在 主机、单机、网游全面开花。

虚幻竞技场3惊艳亮相 Unreal3支持64位HDRR高精度动态渲染、多种类光照和高级动态阴影特效,可以在低多边形数量(通常在5000-15000多边形)的模型实现通常数百万个多边形模型才有的高渲染精度,这样就可以用最低的计算资源做到极高画质。U nreal3引擎还提供了强大的编辑工具,让开发人员随意调用游戏对象,真正做到所见即所得。 虚幻3引擎中支持PhysX物理特效的场景

游戏引擎分析总结

各类游戏引擎分析总结 1 大型商用引擎—CE3与UE3对比分析 1.1 引擎介绍 虚幻3引擎 虚幻3引擎为Epic公司开发,引擎从最开始开发的目的就是面向授权,市面上目前运用虚幻3引擎开发的游戏众多,最为出名的为单机游戏中的战争机器系列,网络游戏中的剑灵、Tera。 虚幻3引擎优势在于:进门较快,需求要求不高,利用该引擎开发的游戏画面人物流畅。缺点也非常明显:光影效果真实度低,成像效果细节不佳,导致大部分运用该引擎的游戏都通过美其名曰的“雾化”效果来掩盖真实画面的不足,基本虚幻3引擎产出的游戏都会有一种所谓的“朦胧美”、卡通化。 虚幻3引擎为一款支持物理特效引擎,但是在网游中运用并不广,原因也较为明显,虚幻3引擎出品的时间较早,对物理特效支持不佳,在网游中开启物理特效后会导致游戏运行缓慢。 cryengine3引擎 cryengine3引擎为孤岛系列引擎第三代(cryengine),该引擎母公司为crytek,引擎最开始目的只为自家孤岛系列游戏作为使用,并未运用于对外授权,在后期方略改变开始对外推广,使用率稳步提升,使用该引擎较出名的网游为永恒之塔(孤岛二代引擎)。 该引擎经过三代变化,一代为奠定基础,制定画面细节,机器配置要求高,二代优化配置要求,但是画面质量降低,三代重新优化代码层,增强画面效果降低配置要求。 孤岛系列引擎优势:游戏画面真实,细节清晰度高,真实光影效果,要求极低的物理效果,物体边缘效果上佳,使用孤岛系列引擎的画面基本都是走着真实级路线。当缺点也较为明显:在画面超越虚幻3引擎的同时,配置要求上稍高于对手。 1.2 着色系统 虚幻3引擎的画面 cryengine系列引擎画面

游戏开发引擎:cocos游戏开发引擎介绍

专访:游戏开发引擎2014年十月底的cocos 开发者大会上,触控副总裁王哲做了一次演讲,《重新定义下的cocos》。 当时他这样说到,“没有-X 和JS 框架的区别,没有2D 和3D 的区别,它们就在一个引擎里,cocos 集成了所有这些服务,重新定义了无缝的工作流。美术和设计人员不需要配置很复杂的工作目录,不需要配置Android NDK 、SDK 之类的东西,当设计完场景动画和UI 之后可以直接开发工作,开发工作只是由程序员来完成的。”那么,2014年这一年,cocos 业务特别是CocosPlay 取得了哪些成绩?Cocos 部门对HTML5等新方向如何看待?葡萄君最近在触控厦门分公司与王哲聊到了这些话题。 葡萄君:对于触控,CocosPlay 的意义在于?王哲:Cocos Play 目前是给触控代理的几款游戏使用,先让自家游戏用好了,再考虑面向别家以及商业化。自己先趟坑,这是触控开发工具类产品一贯的做法。Cocos Play 是一个在用户体验上跟 HTML5接近的系统,但没有HTML5那么高的移植和性能要求,不需要重写程序内容。Cocos Play 技术可以对Native 游戏简单改造之后,实现两个要点:免安装,和边玩边下载,也就是以前PC 页游的运行模式。王哲:PC 互联网是以网站为基础建立服务链的,现在移动互联网App 之间不能连通,于是需要SDK 的接入。对于大量app 产生的移动互联网流量,如内涵段子、冷笑话精选、美图、酷狗音乐等,、管路敷设技术通过管线敷设技术不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

Java简单物理引擎

这款引擎本来是FLASH版本的,后来移植到JAVA和C++版本,但是JAVA版本貌似和C++版本不同,我也没有深究,这款引擎比较适合做简单的物理游戏,速度比JBOX2D要快的多,有兴趣的朋友可以试试。 APE(物力引擎) APE,设么是APE呢。APE(Actionscript Physics Engine)是一个ActionScript3写成的物理引擎,用于模拟现实中物体发生的运动和碰撞。它是免费、开源的,遵循MIT协议。 看来特别适用用来做游戏开发,已经有许多很有趣的应用使用这个开发的。 现提供了Java Port,和C++ SDL Port 官方网址为:https://www.wendangku.net/doc/8d14282869.html,/ape/ 下载地址为:https://www.wendangku.net/doc/8d14282869.html,/ape/ape_a045.zip(包含两个demo,api,swc文件,和源码) 官网的两个例子: Demo1:https://www.wendangku.net/doc/8d14282869.html,/ape/demo1.htm

Demo2: https://www.wendangku.net/doc/8d14282869.html,/ape/demo2.htm

API地址: https://www.wendangku.net/doc/8d14282869.html,/ape/docs/api/ 下面中文版,网上搜集的 APE中总共才12个类,用起来相当的方便。这12个类的继承关系如下: 目录: AbstractCollection Group Composite AbstractItem AbstractConstraint SpringConstraint AbstractParticle RectangleParticle CircleParticle WheelParticle Vector APEngine AbstractCollection(子类有:Group和Composite) 此类为群组性的基类。你不应实例化这个类,而应该使用该类的子类。 属性: constraints 属性 constraints:Array [只读] 一个数组,包含所有被加入到AbstractCollection中的AbstractConstraint类的实例。 particles 属性 particles:Array [只读] 一个数组,包含所有被加入到AbstractCollection中的AbstractParticle类的实例。 sprite 属性 sprite:Sprite [只读] 为渲染和增加children而提供的作为容器使用的Sprite。当这个sprite第一次被请求时,这个sprite会自动的加入到APEngine类的全局容器中。 构造函数: public function AbstractCollection() 方法:

游戏引擎发展史(上)

游戏引擎(Game Engine)是什么?大多数人给出的解释都是基于engine的英文翻译,将游戏引擎等同于汽车中的引擎(发动机),再好一些的解释成动力,这些解释都对,但是动力只说并不全面,不能完整反映出游戏引擎在游戏中的作用与地位。 布加迪威龙之所以强大就是源自其W16发动机 先举一个简单例子,在某游戏中的一个场景中,玩家控制的角色躲藏在屋子里,敌人正在屋子外面搜索玩家。突然,玩家控制的是一个穿迷彩服的士兵,突然碰倒了桌子上的一个杯子,杯子坠地发出破碎声,敌人在听到屋子里的声音之后聚集到玩家所在位置,玩家开枪射击敌人,子弹引爆了周围的易燃物,产生爆炸效果。在这个简单而常见的过程中,游戏引擎便在后台起着作用,控制着游戏中的一举一动。

一些游戏中常见的场景都是引擎在后台起着作用 把这个过程用专业们的语言分解一下就会变成这样:首先出场的是可以行动的士兵,也就是人物模型。模型由引擎中的动画系统赋予运动能力,游戏中角色能做出什么动作便取决于动画系统有多强大。人物的真实程度则取决于3D模型渲染引擎的能力,这也是游戏引擎最重要的功能之一,游戏的画质高低便由它来决定。之后,士兵碰倒了杯子,这个过程涉及到引擎的碰撞检测,它可以决定不同的物体在接触的时候会产生什么样的结果,有的游戏能穿墙有的则不能便是不同的碰撞检测控制的。例子中设定的是把杯子碰倒了,杯子发出了破碎声。在发生某种动作的同时发出相应的声音则属于引擎中的音效处理了。杯子破碎的声音吸引了敌人的注意,这是引擎中的AI智能运算在起作用,最后双方交火引发爆炸,爆炸产生的烟雾、爆炸物飞散则是引擎中的物理效果在起作用了。 可以说,游戏引擎虽然有着“动力(Engine)”之名,但是其实际上却是行“大脑(brain)”之实,指挥控制着游戏中各种资源。游戏引擎的准确定义也是如此,“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。”通常来讲,游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。(引自wikipedia)

龙图教育:Unity3D内置了Physx物理引擎系统简单介绍

龙图教育:Unity3D内置了Physx物理引擎系统简单介绍 Unity内置了NVIDIA的Physx物理引擎Physx是目前使用最为广泛的物理引擎被很多游戏大作所采用开发者可以通过物理引擎高效、逼真地模拟刚体碰撞、车辆驾驶、布料、重力等物理效果使游戏画面更加真实而生动。 Rigidbody刚体组件可使游戏对象在物理系统的控制下来运动刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响通过脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。 依次打开GameObject->Create Empty创建一个空游戏对象然后选择该对象打开菜单栏中的Component->Physics->Rigidbody如下图 Rigidbody组件的属性面板如下图

Mass质量该项用于设置游戏对象的质量 Drag阻力当对象受力运动时受到的空气阻力0表示没有空气阻力阻力极大时游戏对象会立即停止运动 Angular Drag当对象受扭矩力旋转时受到的空气阻力0表示没有空气阻力阻力极大时游戏对象会立即停止运动 Use Gravity使用重力若开启此项游戏对象会受到重力的影响 Is Kinematic是否开启动力学若开启此项游戏对象将不再受物理引擎的影响从而只能通过Transform属性来对其操作 Interpolate插值该项用于控制运动的抖动情况有3项可以选择None没有插值Interpolate 内插值基于前一帧的Transform来平滑此次的TransformExtrapolate外插值基于下一帧的Transform来平滑此次的Transform Collision Detection碰撞检测该属性用于控制避免高速运动的游戏对象穿过其他的对象而未发生碰撞有3项可以选择Discrete离散碰撞检测该模式与场景中其他的所有碰撞体进行碰撞检测Continuous连续碰撞检测Continuous Dynamic连续动态碰撞检测模式

Havok 物理引擎教程

物理引擎Havok教程(一) 搭建开发环境 网上关于Havok的教程实在不多,而且Havok学习起来还是有一定难度的,所以这里写了一个系列教程,希望能够帮到读者。这是第一期。 一、Havok物理引擎简介 Havok引擎,全称为Havok游戏动力开发工具包(Havok Game Dynamics SDK),一般称为Havok,是一个用于物理系统方面的游戏引擎,为电子游戏所设计,注重在游戏中对于真实世界的模拟。使用碰撞功能的Havok引擎可以让更多真实世界的情况以最大的拟真度反映在游戏中。 开发商Havok成立于1998年,目前Havok物理引擎被超过200款游戏使用,许多电影也应用了这家公司的软件技术。 2007年9月Havok被Intel收购,为了和NVIDIA的PhysX竞争,Intel在去年的(08年)免费开放了Havok的Physics和Animation组件,内容包括Havok SDK库、样例、技术文档以及支持Maya、3ds Max和Avid XSI等3D建模软件的格式转换工具。 按照Havok的授权文档,即使使用它开发商业游戏也是不需要付费的,这对国内的爱好者应该是一个好消息。 同PhysX相比,个人觉得,Havok无论在稳定性还是功能上,都要略胜一筹。NVIDIA 的PhysX在硬件加速上,暂时领先,但随着AMD加入到Havok硬件加速的开发,未来Havok 的功能肯定会更加的强大。 二、Havok开发环境的搭建 1.安装SDK 首先,到Havok的官网下载SDK,https://www.wendangku.net/doc/8d14282869.html,/sites/havok/,填写自己的姓名和邮箱,注册后即可下载。 Content Tools是内容工具,包括一些3D建模软件的导出工具。Behavior Tool是给游戏美工或设计师用的角色编辑工具,具有所见即所得的功能。对程序员来讲最重要的就是SDK了,我下载的是6.0.0这个版本。因为Intel只开放了物理和动画两个组件,所以下载的SDK是只包含这两个组件,其他的如布料(Cloth)和破坏(Destruction)还是需要付费才能使用。 Havok SDK使用的是C++语言,开发环境是Visual Studio,我用的版本是2005。

手游开发引擎对比分析

手游开发引擎对比分析 无论是2D游戏还是3D游戏,游戏引擎都充当着游戏骨架的角色,没有游戏引擎就无法做出一款真正的游戏。通过游戏引擎,制作者可以把画面、剧情、 关卡、操作等元素拼接在一起,成为一款完整的游戏,同时赋予制作者实现其设 计理想的可能性。 近几年来,移动互联网的兴起,也让手游产业飞速发展;更多的手游引擎也开始崭露头角,Cocos2d, libgdx, OGEngine等这些名字,也逐渐被开发者所熟知。 下面我们就来对比分析一下主流的手游开发引擎: 引擎跨平台使用语言游戏画面API 门槛开源开发速度开发成本第三方集成Coco2d-x √C++ Lua 2D √中√一般一般√OGengine Android,iOS Java 2D √低√快低√Unity-3d √C# JS Mobo 3D √中×慢较大√ Conora ios android Lua 2D √中× 慢 较大选择性支持 Angle Android Java 2D 少中√快低√Rokon Android Java 2D √(停止更新) 中√ LGame Android PC(J2ME) Java 2D 少中√一般一般 Libgdx Android Java 2D 少中√一般低√JPCT Android PC(J2SE) Java 3D √中√一般较大 Catcake Android PC(J2SE) Java 3D 少√ 其中部分的介绍和分析如下: 1.Cocos2d-x 简介 Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台。 Cocos2d-x提供的框架外,手机游戏,可以写在C++或者Lua中,使用API是 Cocos2d-iPhone完全兼容。Cocos2d-x项目可以很容易地建立和运行在iOS, Android,黑莓Blackberry等操作系统中。Cocos2d-x还支持Windows、Mac和 Linux等桌面操作系统,因此,我可以编写的源代码很容易在桌面操作系统中编 辑和调试。

2D游戏引擎的设计与实现-毕业设计

2D游戏引擎的设计与实现 中文摘要 如今的游戏开发都离不开游戏引擎,游戏引擎是将游戏开发中通用的功能都封装起来并通过实现一个接口让开发者简单的调用此接口便可以实现想要的功能。如今市面上有众多开源或不开源的2D游戏引擎,它们各有优缺点,设计方式也大同小异。 本文以开发2D单机游戏的技术要点为主题,编程语言采用c++,将运行效率高为目标研究设计,实现简单的2D游戏引擎。由于一个完整的引擎所需的功能和工具比较多,所以,论文包括窗口创建和系统消息处理模块设计、渲染系统设计、GUI系统设计、音频系统设计、数据库读写设计、扩展类设计,并进行引擎性能测试和使用。 关键词:2D游戏引擎GUI 渲染系统 Chinese Abstract Nowadays, the development of game can’t do without game engines,which encapsulate the general function while developing games and developers simply call the interface to realize the function which they want by achieving a interface.At present, there are too many open source or closed source 2D game engines.And not only do they have advantages and shortcomings,but also they are similar to designing style . This text tells that programming language uses C++ and designers set the goal of high operational efficiency to design as well as realize a simple 2D game engine with the topic of developing 2D singe-player games’technical points .Due to a complete engine need so many functions and tools that the paper including the creation of Window and the design of system message processing module ,rendering system ,GUI system ,audio system, database’ reading and writing as well as extension.The last,designers would go ahead with testing and using engine performance. Key words:2D game engines GUI Rendering system

游戏引擎中的图形绘制技术

《游戏引擎应用实践》 3D Game Engine Programming and Its Application 教学大纲 一、课程性质与目的 本课程是为数字媒体艺术专业高年级本科生开设的选修修课。随着计算机性能的不断提高和3D图形加速卡的普及,计算机游戏也得到了飞速的发展,从原来的2D 游戏发展到现在形象逼真的3D设计,游戏开发尤其是游戏引擎的发展也经历了巨大的变革。 本课程讲授游戏引擎的发展、游戏引擎中的图形绘制技术、动画技术、人工智能技术以及游戏引擎的架构,最后讲授游戏引擎实例及应用。本课程旨在培养学生掌握游戏引擎的设计和应用,成为合格的游戏开发工程师。 二、教学基本内容及基本要求 第一章游戏引擎概述 1、教学内容: (1)游戏引擎简介 (2)游戏的引擎进化发展史 (3)游戏引擎未来的发展趋势 2、教学要求: (1)掌握: (2)理解: (3)了解:游戏的引擎进化发展史和发展趋势 第二章游戏引擎中的图形绘制技术 1、教学内容: (1)纹理映射 (2)光照模型 (3)多通道渲染 (4)视锥剪裁 (5)硬件加速 (6)Billboards技术 (7)地形绘制 (8)LOD技术 (9)空间八叉树、KD树、BSP树 (10)可见性 2、教学要求: (1)掌握:纹理映射、光照模型、视锥剪裁、Billboards、LOD、空间八叉树、

可见性等技术 (2)理解:多通道渲染、硬件加速、KD树、BSP树等方法 (3)了解: 第三章游戏引擎中的动画技术 1、教学内容: (1)关键帧动画 (2)角色设置 (3)逆运动学技术 (4)基于物理的动画技术 (5)粒子系统 (6)碰撞检测 2、教学要求: (1)掌握:关键帧动画、逆运动学、粒子系统、碰撞检测等技术 (2)理解:角色设置、基于物理的动画技术 (3)了解: 第四章游戏引擎中的人工智能技术 1、教学内容: (1)有限状态机 (2)决策树 (3)规则库系统 (4)模糊理论 (5)神经网络 (6)路径规划 2、教学要求: (1)掌握:有限状态机、决策树、规则库、神经网络等人工智能技术 (2)理解: (3)了解:模糊理论和路径规划技术 第五章 3D游戏引擎的架构 1、教学内容: (1)加载模块 (2)DLL管理模块 (3)引擎管理模块 (4)UI模块 (5)渲染模块 (6)文件管理模块 (7)游戏逻辑功能模块 (8)游戏AI功能模块 2、教学要求: (1)掌握:3D游戏引擎的架构中的模块划分及各模块的功能 (2)理解: (3)了解:

相关文档
相关文档 最新文档