APEのAbstractParticle
- 2008 年 5月 21 日
AbstractParticleクラス。粒子にモーションを加える場合、このクラスのプロパティ、メソッドを使うと思います。
AbstractParticleクラスは、CircleParticle、RectangleParticleが継承しているクラスです。
各粒子の基本になるクラスで、通常AbstractParticleのインスタンスを作ることは無いです。
サンプル
・プロパティ
■center:Vector
粒子の現在の座標をVectorで返します。読み込み専用。
・Vectorはpx : pyの値です。
■collidable:Boolean
衝突をするかどうか。trueだと衝突する。falseだと衝突しない。
■elasticity:Number
弾力。サブクラスのコンストラクタで設定した弾力の値はここに格納されます。
・基本0から1の間で設定。
■fixed:Boolean
固定するかどうか。サブクラスのコンストラクタで設定した固定の値はここに格納されます。
■friction:Number
摩擦。サブクラスのコンストラクタで設定した摩擦の値はここに格納されます。
・基本0から1の間で設定。
■mass:Number
質量。サブクラスのコンストラクタで設定した質量の値はここに格納されます。
・質量0以下だとエラーになって表示されないです。
■multisample:int
次の表示位置までの間に衝突判定を行います。multisample回、衝突判定を行う為、早く動きすぎる粒子が壁を突き抜ける等を回避できます。
・摩擦計算も何度も行われるので、突き抜け回避に値を高くしすぎると今度は摩擦が問題になります。
■position:Vector
現在の位置。
■px:Number
現在のx座標。
■py:Number
現在のy座標。
■velocity:Vector
粒子の現在の速度。
・粒子を現在の位置から相対的に移動させる場合、velocityを変更するかaddForce()を使います。(指定座標に移動するならpxやpy、positionを使える。)
・velocityに代入すると、即座にその速度になりますが、addForceで速度を加えるとベクトル演算して速度が変更されます。
・メソッド
■addForce(f:Vector):void
粒子に加える、粒子の重さを考慮する力。
f = 加える力のベクトル。
・updateからAPEngineクラスのaddForceで設定したVectorが渡されてます。
■addMasslessForce(f:Vector):void
粒子に加える、粒子の重さを考慮しない力。
f = 加える力のベクトル。
・updateからAPEngineクラスのaddMasslessForceで設定したVectorが渡されてます。
■setDisplay(d:DisplayObject, offsetX:Number = 0, offsetY:Number = 0, rotation:Number = 0):void
引数の値でDisplayObjectに追加します。
d:DisplayObject = 追加するDisplayObject。
offsetX:Number = DisplayObjectのx座標。
offsetY:Number = DisplayObjectのy座標。
rotation:Number = DisplayObjectのrotation。
■update(dt2:Number):void
粒子の各プロパティを更新します。
dt2 = 変化量。
・通常APEngineのstep()が実行される毎にupdate()が呼び出される。
※インタラクションに対して、粒子を移動させたいってことは、当たり前に出てきそうなので、以下は重要そうかな。
位置を変更する => position(またはpx、py)
速度を変更する => velocity
力を加える => addForce