2010年10月14日

Papervision3Dでアクションゲームのテスト

Papervision3Dを使ってアクションゲームを作ってみるテスト。
ネット上のリファレンス等を見つつ作ってみたPapervision3Dの習作。
action_pv3d_cap1.jpg

>Papervision3Dアクションゲームサンプル

歩きとジャンプで移動して、ショット or 体当たりでラミエルさんを破壊できます。
3D空間のレンダリング、カメラ移動、当たり判定、オブジェクトの追加消去等、
基本的な要素が一通り入ったものをといった感じです。

モデルはファイル保管庫@七葉よりズサさんの制作されたものを拝借中です。


レンダリングエンジンは、BasicRenderEngine、画質を「低」にして、
描画品質よりも高速化に重きを置いています。
…といいつつ、最終的なレンダリング結果にさらに
ぼかしや加算合成などのエフェクトを入れたりしていますw


キューブの陰影は、予めテクスチャ側に描いた。


床はPlaneを敷くと見た目の割に地味にコストが高いので使用せず、
天球の下半分を地面と同一の色にして誤魔化しています。
ただそれだけだと宙に浮いているように見えてしまうので、
キャラの影と、草に見立てたParticleFieldを敷くことで地面っぽさを出しています。


ラミエルはSphereで制作。分割数が少ないと、正八面体になる。
マテリアルはFlatShadeMaterial。
var myFlatShadeMaterial:FlatShadeMaterial = new FlatShadeMaterial(light, 0xFFFFFF, 0x0000FF,0.5);
var mySphere:Sphere = new Sphere(myFlatShadeMaterial, 50, 4, 2);


爆発はパーティクルが一つだけのParticleFieldを大量にばらまいて表現。
//爆風テクスチャ
var myTxExp:TxExp = new TxExp(32, 32);
var myParticleMat:BitmapParticleMaterial = new BitmapParticleMaterial(myTxExp,1,-16,-16);
var myParticleField:ParticleField = new ParticleField(myParticleMat, 1, Math.random() * 3 + 0.2, 1, 1, 1);


キューブの当たり判定は至ってシンプルで、
キューブを回転させずに配置することで、単純なXYZ座標の比較だけで当たり判定を行うことができる。
回転が入ると明らかにメンドイので今回はパス。
ラミエルの判定も見た目は正八面体だけど、実際は上記同様にキューブとして判定。


キャラのモーション付けは、Matrix3Dで。
腕などのパーツでオブジェクトの中心軸がズレている場合は、
Matrix3D.rotationMatrixWithReferenceが、任意座標を中心軸として回転してくれるので便利。
さらに、親子関係が成り立つようなパーツ構成の場合は、
Matrix3D.multiplyで親パーツと子パーツの変形を合成している。

//体の変形(Y軸回転)
var myBodyR:Number = Math.PI;
var motionBody:Matrix3D = new Matrix3D();
motionBody = Matrix3D.multiply(motionBody, Matrix3D.rotationY(myBodyR))

//足の変形([myX,myY,myZ]を中心座標に指定してのX軸回転)
var myLegR = Math.PI * 0.5
var motionLegR:Matrix3D = new Matrix3D();
motionLegR = Matrix3D.rotationMatrixWithReference(AXIS_X, myLegR , new Number3D(myX, myY, myZ));

//読み込んだモデルに変形を適用
myMqo.getChildByName("sdef:m胸").transform = Matrix3D.clone(motionBody);
//足パーツにはmotionNowBodyとmotionNowLegRを合成した変形を適用
myMqo.getChildByName("sdef:m右足").transform = Matrix3D.multiply(motionNowBody, motionNowLegR);




とりあえず、こんな感じ。

ちょっと様子見つつ、そのうちwonderflにもアップしてみるか?
posted by がれな at 23:43| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。