Home > action script > Fisix をゼロから触る時のメモ

Fisix をゼロから触る時のメモ

物理エンジンライブラリ「Fisix」。今ちょっと触っているのですが、どうせ1ヶ月もすればスッパリ忘れてしまいそうなので、基本の基本からメモしておこうと思いました。

書いてる本人以外には分かりにくいと思います。

参考:
APIリファレンス

パッケージはswc化してるので、FlashCS3では遊べません。.swcを.zipにリネーム&解凍しても、そもそもFlash用コンポーネントではないので使えない様子。

FisixEngine クラスの setGravity(x方向, y方向) で全体の重力を決める。1秒でいくら動くかを設定するので、毎フレーム1px動かすときは 1 * stage.frameRate となる。

FisixiEngine クラスの継承元の FisixObject クラスのメソッド newSurface とか newCircleParticle とかでプリミティブを追加

上のnew[オブジェクト]メソッドによる生成方法の他にも、new FisixObject してモノをつくってから、エンジンに addObject することでも、図形の追加は可能。(via flashrodさん:http://d.hatena.ne.jp/flashrod/20061228)

各プリミティブの setVelocity(new Vector(x方向, y方向), あと謎の引数); でプリミティブごとの重力ベクトルを生成。その方向に勝手に進むように指定できる。

new Surface(始点のベクトル, 終点のベクトル, 太さ); において、太ければ太い程バグが起こりにくい。太さ1だと衝突検知時におかしくなるところ、10にすればキチンと動いた。なお、太さ設定はオプション、デフォルト値は1。

FisixEngine クラスのsetReactionModeメソッド。リファレンスでは引数はCollisionModesと書いてあるのに、チュートリアル見るとsetReactionMode(ReactionModes.PHYSICAL)みたく、ReactionModesクラスのプロパティを指定しているのは何故だろう?←APIリファレンス側がsetDetectionModeと誤表記してるっぽい。

エンジンを開始させる FisixEngine クラスのstartEngine(フレームレート); を発動させれば物理シミュレーション開始となるが、これを使わず mainLoop() を Event.ENTER_FRAME でも代用できる。mainLoop メソッドの引数はデフォルトで1だが大きすぎる。引数の原理は未確認。←たぶんsetGravityメソッドの引数とのバランスが大事。

エンジンやサーフェイス設定をした後で、setRenderGraphics(graphics); でthisのgraphicsに対して描画できる。例えば ground:Sprite に入れ子にしたいときは setRenderGraphics(ground.graphics);

setRenderGraphics()の後でFisixEngineインスタンスに対して新規でSurfaceを追加した場合、イメージ的には再度 setRenderGraphics(描画先グラフィック); を宣言しないとダメっぽいけど実は不要。

オブジェクトの削除はunload();で消せる!dispose();がどうも上手く動かなくてつまづいてた!

FisixObjectを継承した外部クラス内で図形を描画しておいて、それをメインクラス上でaddObjectするのが定石(via:モンスタートラックのTruckV2.as)

DetectionModes クラスでシミュレーションの度合いと処理速度の兼ね合いを調整できる。HYBRID_RAYCASTが中間ぐらいでバランスが良いのでオススメらしい。

タイヤはWheelParticle、ボディはCircleParticle(最軽量)の集合体で作る。

2個のパーティクル(例:ホイール)を単純に繋ぐだけならStickConstraint、サスペンションちっくにしたければSpringConstraint。繋げたものをaddConstraintして、setCenter(x,y)で配置場所を決定。(via: http://wiki.fisixengine.com/index.php?title=ConstraintsTutorial)

別体系のFisixEngineインスタンスを2個作って、両エンジンの支配下となるオブジェクトとかは作れない。例:_rootで両サイドに壁を作って、その中にSpriteを入れ子、その中でSpriteごと動く別体系のFisixEngine上にクルマを置くとかは無理っぽい。同一エンジンインスタンス上に置いてDynamicSurfaceで動く壁を作ることで対処した。

Constraints でモノを構造化するときは、リアルと同様、3点で支えないといけない。その際もSpringConstraint が柔らかすぎると、衝撃の反動で構造が崩れることがあるので、第3引数を下げすぎないことが重要。

要するに車でもイスでもとにかくオブジェクトを作りたいときは、CircleとWheelの各パーティクルを配置してConstraintsで繋ぐこと。その際、各円の中心間の距離を設定することになる。適当でも大丈夫みたいだけど、正確に座標を出した方が良さそう。前述の構造の崩れは、Circle半径を大きくすることでオブジェクト内の隙間に入り込まないようにすればOKかな。

FisixとMicrophoneの連動サンプル作ってるのだけど、FlexでMicrophone使うとブラウザプレビュー時にタブ閉じたらFF強制終了する。対処法としては一旦別サイトにページ更新してからタブ閉じてるのだけど面倒だなぁ。

Comment:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Trackback:0

TrackBack URL for this entry
http://www.trick7.com/blog/mt-tb.cgi/646
Listed below are links to weblogs that reference
Fisix をゼロから触る時のメモ from trick7.com blog

Home > action script > Fisix をゼロから触る時のメモ

持っている Flash & ActionScript 関連本の中から、自分的おすすめの読む順番をご紹介。各書籍のレビューは books カテゴリからご覧頂けます。
この順番でどう?(AS3.0)
  • Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD付)
    Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD付)

    デザイン方面からFlashデビューして、そのままAS2.0を使うようになった人が、難しいと評判のAS3デビューする時の最初の1冊として、とにかく目を通しておくと良いかと思います。プログラミング経験の少ない方でも、サンプルをじっくり読めば、ゼロからのAS3デビュー可。
  • ActionScript 3.0 アニメーション
    ActionScript 3.0 アニメーション
    洋書「Making Things Move!」の日本語訳本。ActionScript3.0で数学的アニメーションを作ることがメインテーマなのですが、前半部分でAS3.0の基礎を分かり易く解説されています。後半の重力, IK, 3D表現等のアニメーション解説も楽しい。僕はこれのAS2.0洋書版を読んでFlashの面白さに気付きました。
  • Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)
    Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)
    この次の辞典のような洋書を読む前の事前知識としてこの本の内容を理解しておくといいかも。
  • Essential ActionScript 3.0 (Essential)
    Essential ActionScript 3.0 (Essential)

    900ページ以上ある相当分厚い本。基礎からOOPまでを解説。ほぼ網羅しているので、これを抑えておけばAS3博士になれそう。
  • Actionscript 3.0 Cookbook
    Actionscript 3.0 Cookbook

    ActionScript3.0のリファレンス本。問題とその解決法が1ページぐらいで細分化されているので空いた時間にちょっとずつ読み進められる。WebでAS3のソースを見て勉強する時の字引としても使う。ただ、時期的に初期の本なので、AS3自体が仕様変更してたりするので正誤表は必読。
  • Object-Oriented Actionscript 3.0
    Object-Oriented Actionscript 3.0

    7/23に発売されたFlash&OOP本。AS2.0版は持っているのだけど、オブジェクト指向の初歩的な解説から入って、後半は僕の理解を超える難度になっていきました。今度こそ理解できるか?
この順番でどう?(AS2.0)
  • Foundation Actionscript Animation: Making Things Move (Foundation)
    Foundation Actionscript Animation: Making Things Move (Foundation)

    スクリプトでアニメーションさせる方法を学べる。プログラムの知識というよりも数学や物理の知識が必要。バネの表現や3D表現など、汎用性の高いテクニックを身に付けられ、個人の表現力をレベルアップするのに最適。参考までに、僕が調べた英単語リスト。2007年4月に、AS3対応版も発売されました。
  • ゲーム開発のための数学・物理学入門 Beginning Math and Physics for Game Programmers
    ゲーム開発のための数学・物理学入門  Beginning Math and Physics for Game Programmers

    「Making Things Move!」の世界を突き詰めたい人用のステップアップのための本。行列や物理運動、2D/3D表現。Flashの本ではなく、じっくり読むタイプの本なので、あとまわしにしてもいいかも。
  • Flash 8 Essentials
    Flash 8 Essentials

    Flash8の新機能を紹介。全10章が独立した構成で、興味のある部分から読めます。フィルタやビットマップ、ビデオの使い方とかを、基礎から順を追って理解していけるので、ゼロからスクリプティングできるようになる。僕はビットマップ関連の作業の際のリファレンスとして常用しています。
  • .fla―Idea of Flash Creation
    .fla―Idea of Flash Creation

    上の本でFlash8の基本を身に付けて、それをどう面白い表現に落とし込むかを学べます。深津さんの、試行錯誤・実験しやすいスクリプティング、クラス設計に凄さを感じました。YouTubeやFlickrのAPI、PHPとの連携記事も。
  • FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]
    FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]

    ここまでで表現力が付き、テンションが上がるので、その勢いで難解なオブジェクト指向に挑戦。プログラム経験のない人がいきなり英語のOOP本を読むのは厳しい。この本で継承とかインターフェースとかポリモーフィズムとかの用語を理解しておくといいかも。
  • オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―
    オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

    Flashの本ではありませんが、OOPの概念を気軽に読めるボリュームで解説してくれます。英語と日本語のOOP用語の対応を図るためにも「Object-oriented Actionscript for Flash 8」と併読するのがおすすめ。なんとなく読んでおくだけでも結構違うのでは。
  • Object-oriented Actionscript for Flash 8
    Object-oriented Actionscript for Flash 8

    前半はOOPの利便性や基本の紹介。デザインパターンやMVCの理解。13章からグッと難しくなって大変。Flash8対応。
  • Essential Actionscript 2.0
    Essential Actionscript 2.0

    上の本よりもさらにOOPプログラマ向け。同じOOP本ということでやや重複しており、こちらはMX2004時代の本なので見送ってもいいかも。分かりやすい英語で良著。この本のAS3版が出たら間違いなく買い。

Page Top