Alternativa3Dを試してみる Part.04 : WalkControllerで迷路

前回はCameraControllerを使ってカメラの移動操作を覚えましたが、同パッケージにWalkControllerというなんとも徒歩が再現できそうなコントローラーが用意されています。世の中にはAlternativa3Dのデモ・チュートリアルがあまりにも少ないので学習コストがかかる不安感がますます大きくなってきていますが、幸いにもオフィシャルの素敵なデモのソースコードが公開されています。TempleというデモのドキュメントクラスにWalkControllerが使われていましたので、これを試してみることにしました。

  • demo (要Flash Player 10)
  • src (要Alternativa3D, Flex SDK 3.2以降)

徒歩が試せますので、迷路にしてあります。以下、技術解説です。

WalkController

基本的にはCameraControllerと同じように設定していきます。例によって初期化の引数にはイベントを受け取りたいDisplayObjectを使います。

[source:javascript]
// 徒歩のコントローラーを作成
controller = new WalkController(stage);
[/source]

キーボードの設定。ディフォルトのカーソルキーは視点の回転に割り当てられているので、移動のキーとして割り当てなおしています。

[source:javascript]
// キーボード操作を可能にする機能
controller.setDefaultBindings();
// キーボードショートカットの整理
controller.bindKey(KeyboardUtils.UP, ObjectController.ACTION_FORWARD);
controller.bindKey(KeyboardUtils.DOWN, ObjectController.ACTION_BACK);
controller.bindKey(KeyboardUtils.LEFT, ObjectController.ACTION_LEFT);
controller.bindKey(KeyboardUtils.RIGHT, ObjectController.ACTION_RIGHT);
[/source]

ここからがCameraControllerと違うところ。特に便利だと思ったのは重力やジャンプが設定可能なこと(スペースキーでジャンプできます)。地面を敷いておけば地面を歩くことが簡単に実現できます。

[source:javascript]
// WalkControllerの対象を設定
controller.object = camera;
// 障害物の衝突設定
controller.checkCollisions = true;
// 徒歩の速度
controller.speed = 500;
// ジャンプ(スペースでジャンプできます)の速度
controller.jumpSpeed = 750;
// 重力の速度
controller.gravity = 600;
// 視点(制御点)の高さ
controller.objectZPosition = 2;
[/source]

ジャンプを繰り返すと、地面のない場所へ行ってしまい、延々と奈落の底に落ちてしまいます。このあたりはジャンプで壁を越えられないように設定すべきですが、まぁ息抜き程度のネタとして。

他にもいろいろパラメーターがあって試しどころがあるのですが、いかんせん元々の3D知識が足りないので、とりあえず動かせるようになっただけで満足。次回はこの迷路にテクスチャを貼り付けていきたいと思います。

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加

Comment/Trackback 2件