なにやらkijimaにパーティクルブームがきているようなので乗っかってみます。


クリックでなにかが散らばります。


モノを動かす時の要素ですが、X・Y・Z軸の移動、回転、拡大率の9項目。
matrixで以下のようになります。

function makeMatrix(Xpos:Number, Ypos:Number, Zpos:Number,Xrotate:Number, Yrotate:Number, Zrotate:Number, Xscale:Number,Yscale:Number,Zscale:Number):Matrix3D {
matrix.prependRotation(Xrotate, Vector3D.X_AXIS);
matrix.prependRotation(Yrotate, Vector3D.Y_AXIS);
matrix.prependRotation(Zrotate, Vector3D.Z_AXIS);
matrix.prependTranslation(Xpos, Ypos, Zpos);
matrix.prependScale(Xscale,Yscale,Zscale);
return matrix;
}


毎フレームごとに動かす処理はこれ↓。

//pos
v[1] = (v[1]+v[2])*v[0];
v[4] = (v[4]+v[5])*v[0];
v[7] = (v[7]+v[8])*v[0];
//rot
v[10] = (v[10]+v[11])*v[0];
v[13] = (v[13]+v[14])*v[0];
v[16] = (v[16]+v[17])*v[0];
//pos,rot,scale
mat3D=makeMatrix(v[1],v[4],v[7],v[10],v[13],v[16],1,1,1);


拡大率は今回使わなかったので1にしてあります。
vはvectorクラスで、値の数は19個。1パラメータにつき初速・加速度・初期値があり、それが座標3つと回転3つで計18個、プラス空気抵抗で19個です。
内訳は
0:抵抗
1:X初速
2:X加速
3:X初期値
4:Y初速
5:Y加速・・・と続いています。

実際は場合によって使用しないパラメータの分を省いたりして軽量化しますが今回は拡大以外フルで。
Z軸の計算をFlashが持ってくれるので舞い散る感じのアニメーションがすごく楽になったと思います。紅葉とか、桜とか。

さて、次。ほぼコードは同じですがクリックで始まります。

少し変えただけで変わりまくるのがパーティクルのいいところ。予想しきれるものじゃなくなってくるのでどんどんやります。

で。もいっこ。クリックで再生。


よくクラブで見る感じのラインアニメーションをいくつも重ねたもの。
あまり差はないと思いますがvecterクラスで。

今回のソース3つはここ

HTML5飯