WOW-Engineとは、3D空間上で物理演算するフレームワークである。座標計算とか、衝突計算とか、そういうことだけをWOWEngineはやってくれる。

3Dオブジェクトの描画はしてくれないので、3D空間に壁をつくるとか、球体を表示するとか、「表示をする」ならば、Papervision3Dとか、Sandyとかと組み合わせて作成必要だ。あくまでオブジェクトの位置関係を計算するだけだ。

WOWEngineを使う手順は以下の通り

  • WOWEngineを入手する
  • WOWEngineを初期化する
  • 物体を追加する
  • 物体を動かす
  • WOWEngineで計算する
  • 表示に反映する。

ad92c135a786cbe48fa2267d48527fbf

サンプルいろいろ(最近、アクセスできない場合は頻繁だよう、変わりにゴーグルコードサイトにアクセスできる)

Wow-Engineの導入と解説に関してはhttp://d.hatena.ne.jp/o_healer/20080315/1205573581に参考できる。

WOWEngineを初期化する

ここからは実際にWOWEngineを使う話。まずは、3D物理計算を行ってくれるエンジンである、「WOWEngine」のインスタンスを作成・初期化する必要がある。
以下のような感じで、クラスのメンバとして定義する。

  1. private var wow:WOWEngine;
  2. private var wowFloor:WBoundArea;
  3. private var wowMiku:WSphere;
  4. private var wowRin:WSphere;

このようにして宣言したWOWEngine関連のメンバを、次のように初期化する

  1. wow = new WOWEngine();
  2. wow.collisionResponseMode = wow.SELECTIVE;
  3. wow.addMasslessForce(new WVector(0, 0, 0));//常にかかり続ける力
  4. wow.damping = 1;
  5. wowFloor = new WBoundArea(FLOOR_WIDTH , FLOOR_HEIGHT , FLOOR_DEPTH);
  6. wowFloor.setPosition(0, FLOOR_HEIGHT / 2, 0);//位置
  7. wowFloor.elasticity = 1;//弾性
  8. wowFloor.friction = 0.050;//摩擦
  9. wow.setBoundArea(wowFloor);

物体を追加する

物理計算を行ってくれるWOWEngine自体の初期化が完了したら、そこに物体を加えていく。今回はミクとリンの2物体を追加すればよい。初期化時の

  1. private var wowMiku:WSphere;
  2. private var wowRin:WSphere;

を使う。以下は、かぐぁみねリンが床面に降り立つ→WOWEngineの物体定義の処理を行っている部分。

  1. Tweener.addTween(rin , { y:0 , time:4 , onComplete:function():void {
  2.         wowRin = new WSphere(rin.x , rin.y , rin.z , 60 , false , 43 , 0.65);
  3.         wow.addParticle(wowRin);
  4. }
  5. } );

物体を動かす

  1. private function wowMoveModel(target: displayObject3D , wowTarget:WSphere , point:Number3D):void {
  2. var dx:Number =0;
  3. var dz:Number = 0;
  4. var rad:Number = 0;
  5. if (target && wowTarget &&  point) {
  6.         dx = target.xpoint.x;    //(1)
  7.         dz= target.zpoint.z;    //(1)
  8.         rad = Math.atan2(dx , dz) * 180 / Math.PI;    //(2)
  9. target.rotationY = rad;    //(2)
  10.         wowTarget.velocity = new WVector(-1 * dx / 4 , 0 , -1 * dz / 4);//(3)
  11. }
  12. }

チュートリアル

関連エントリ

グーグルコード

メインコンテンツEND ■
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Posted on Monday, 25th January 2010 by admin

Tags: , , ,
Posted in Flash Project | Comments (0) | 718 views

Leave a Reply