Home > papervision3d > Papervision3DとTweenerで2.5Dアニメーション

Papervision3DとTweenerで2.5Dアニメーション

以前参加したgungiで講演して頂いたgremzというサービスにインスパイヤされて、久々にPV3DとTweenerの話題。

gremzとは
グリムスは、ブログで苗木を育てる育成ゲームです。 育成中の苗木はブログパーツとしてあなたのブログに貼り付ける事が可能です。…(中略)…苗木は ブログエントリー(投稿)によって成長します。 ブログエントリー毎にぐんぐん苗は成長していきます。

苗木のブログパーツをPV3DとTweenerで作っているそうです。
ブログエントリが少なくなると萎れてきたりと、面白いエフェクトがついていました。

面白そうだったので、私もやってみました。

クリックすると、adamrockerがグチャってなります。もう一度クリックするともとに戻ります。
エフェクトはトライ・アンド・エラーな部分が大きいので、適当にするとこんな感じになります(汗)

アニメーション部分

Tweenerで各格子点の動きを移動させます。
動きの追加はTweener.addTween()メソッドで行います。
愚直に以下のようにしました。

//--------------------------------------------mouse click
private function clickObj (e:MouseEvent):void {
  var i:*= obj.geometry.vertices;
   if(isTween) {
      movePoint(i[1], -10, 30, -10);
      movePoint(i[5], -5, 30, -10);
      movePoint(i[9], 5, 30, -10);
      movePoint(i[13], 10, 30, -10);
 
      movePoint(i[2], -5, 50, -20);
      movePoint(i[6], 0, 50, -20);
      movePoint(i[10], 0, 50, -20);
      movePoint(i[14], 5, 50, -20);
 
      movePoint(i[3], 0, 70, 0);
      movePoint(i[7], 0, 70, 0);
      movePoint(i[11], 0, 70, 0);
      movePoint(i[15], 0, 70, 0);
      isTween = false;
    } else {
      movePoint(i[1], 10, -30, 10);
      movePoint(i[5], 5, -30, 10);
      movePoint(i[9], -5, -30, 10);
      movePoint(i[13], -10, -30, 10);
 
      movePoint(i[2], 5, -50, 20);
      movePoint(i[6], 0, -50, 20);
      movePoint(i[10], 0, -50, 20);
      movePoint(i[14], -5, -50, 20);
 
      movePoint(i[3], 0, -70, 0);
      movePoint(i[7], 0, -70, 0);
      movePoint(i[11], 0, -70, 0);
      movePoint(i[15], 0, -70, 0);
      isTween = true;
    }
    scene.renderCamera(camera);
}

あまりに愚直すぎますね…(汗)
プロトタイプの段階では微調整が多いのでこうやっておきます。
movePoint()メソッドは以下のように、Tween.addTween()メソッドで実際の動きを設定しています。

private function movePoint(p:*, diffX:Number, diffY:Number, diffZ:Number):void {
  Tweener.addTween(p, {
                        x:(p.x + diffX), 
                        y:(p.y + diffY), 
                        z:(p.z + diffZ), 
                        time:1, 
                        delay:0,
                        transition:"easeOutElastic"});
}

movePoint()メソッドの引数では、移動対象となるポイントと、移動する差分量を指定します。
Tweenerは相変わらずシンプルで分かりやすいですね。使いやすいです。

ソースコード

とりあえずソースコードを公開しておきます。ご自由にご利用下さい。
Plane3D.as

おわりに

たまには別の言語も触ると刺激になってよいですね。

関連のありそうなエントリ

Comments:0

Comment Form
Remember personal info

*
To prove that you're not a bot, enter this code
Anti-Spam Image

Trackbacks:0

Trackback URL for this entry
http://www.adamrocker.com/blog/202/papervision3d_and_tweener_make_25dimension.html/trackback/
Listed below are links to weblogs that reference
Papervision3DとTweenerで2.5Dアニメーション from throw Life

Home > papervision3d > Papervision3DとTweenerで2.5Dアニメーション

Search
Feeds
Meta

Return to page top