ラグドールその2
必要最小限のコードにまとめて、wonderfl に投稿しました。
Ragdoll Physics using Verlet Integration - wonderfl build flash online
Keith Peters さんのブログ
「詳解 ActionScript 3.0 アニメーション」の原著者 Keith Peters さんのブログ BIT-101 にも紹介されていましたので、簡単に訳しておきます。
原文:http://www.bit-101.com/blog/?p=2500
“AdvancED ActionScript 3.0 Animation”が日本で出版されたよ
FiTC Tokyo に出かける直前、東京のオライリー・ジャパンで翻訳書の出版を担当している宮川直樹さんから連絡がありました。拙書“AdvancED ActionScript 3.0 Animation”の翻訳についていくつか質問を受けたのです。「そうそう、実は来週東京に行くんだよ。ランチでもいかが?」と言えるのは実にクールなことでした。それで東京では、ひとりで地下鉄に乗って無事にオライリーの事務所に着き、本書を担当している何人かのスタッフに会って、オライリー・ジャパンのクールなグッズを頂戴し、おいしいランチをいただきました。
今日、本書が出版されたとの連絡を受けました。本屋さんにも並ぶはずですが、Amazonでも注文できます。
私はまだ本を入手できていませんが、まもなく数冊入手できる予定です。家族の半分が日本人で、日本人の親戚を持ち、日本文化が生活の一部になっている私にとっては、とても重要なことなのです。
オライリー・ジャパンのオフィスでのインタビューは次に載っています。
http://www.oreilly.co.jp/community/blog/2010/01/interview-with-keith-peters.html
Microphoneと音響スペクトル
「詳解 ActionScript 3.0 アニメーション」の5章では、マイク入力の扱い方を説明しています。Flash Player 10 までは、Microphone クラス単独では波形データを取得することができませんでしたが、Flash Player 10.1 では、SampleDataEvent.SAMPLE_DATAイベントのハンドラを設定すると、波形データを得ることができます。
SpectrumTest.swf
(↑クリックすると再生。Flash Player 10.1とマイクが必要です)
ソースは続き
続きを読むラグドール物理
「詳解 ActionScript 3.0アニメーション」の「6.2ベレ法」では「ラグドール物理」という用語が出てきます。
http://en.wikipedia.org/wiki/Ragdoll_physics
にあるとおり、ボロ布でできた縫いぐるみのように、力の入っていないグダグダのキャラクタの運動をシミュレーションする方法です。どんな時に使うかというと、キャラクタが気絶したり死んだときが代表的です。
6章のVerletPoint.asとVerletStick.asを利用して、ラグドール物理の例を作ってみました。
メインドキュメントは RagDoll.as です。また、点と点をバネでつなぐ VerletSpring も定義します。図で灰色で描画されているのがバネです。
RagDoll.swf
(↑クリックすると再生)
マウスをクリックすると、キャラクタが跳ね上がります。上下の矢印キーで、バネが緊くなったり、緩んだりします。
最初、バネは最強になっていてVerletStickと変わりません。[↓]キーを押すと、どんどんグニャグニャになって潰れてしまいます。
一度グニャグニャになったキャラクタを、マウスとキーの操作で再び立たせることができたら、エライです。
(ソースは続きに掲載。)
続きを読む詳解ActionScript 3.0アニメーション正誤表
「詳解 ActionScript 3.0アニメーション」は本日発売です。
……と同時に悲しいお知らせです。
初版1刷に下記のミスがありました。謹んでお詫び申し上げます。
●P.2 18行目 【誤】 Boolen 【正】 Boolean ●P.41 と P.44 リスト アンダースコアをマイナスに訂正します。 【誤】 particle.x = stage.stageWidth _ 1; ... particle.y = stage.stageHeight _ 1; 【正】 particle.x = stage.stageWidth - 1; ... particle.y = stage.stageHeight - 1; ●P.114 脚注 typo 【誤】 tile.position = new Point3D(x * 20, 0, y * 20); 【正】 tile.position = new Point3D(x * 20, 0, z * 20); ●P.175 リスト セミコロンが抜けています。 【誤】 graphics.endFill() 【正】 graphics.endFill(); ●P.189 脚注が不正確でした。 【誤】 音響スペクトルの計算はSoundMixer.computeSpectrumを使えば可能です。 【正】 削除。(Flash Player 10.1なら、取得した音声データを再生すれば、SoundMixer.computeSpectrumを使って音響スペクトルを計算することができます)
なお、原書にあったミスは下記の通りで、日本語版では訂正してあります(が上記の通り、訂正し損ねたものもあります)。句読点や綴りの誤りなどの些細なミスは除いてあります。
(原書の正誤表は続きに掲載)
詳解 ActionScript 3.0アニメーション
Amazonでの受注も比較的順調で、さすがキースさんだなぁ、と改めて思っています。
http://www.amazon.co.jp/dp/4873114373/
てっく煮さんや、fladdictさんのブログでもご推薦いただきました。ありがとうございます。
- てっく煮ブログ: http://d.hatena.ne.jp/nitoyon/20100120/p1
- fladdict: http://fladdict.net/blog/2010/01/keithpeters.html
さて、前回のエントリにも書いたとおり、日本語版にはABA Gamesさんによるゲーム作りの記事が付録についています。これ以外に日本語版のメリットとしては、原書よりちょっとだけ改善されている点があります。
図3-14、図6-8、図8-18、図9-16は原書にはありません。文章だけではイメージしにくいと考え、日本語版にはスクリーンショットを追加しました。
図7-2は、原書では線が交わって描画されていて座標軸と回転方向がわかりにくかったので、日本語版では手前の線が奥の線を隠すように描き直しました。
図1-3〜図1-6、図7-19、図7-20は、マウス操作に追従するサンプルですが、原書ではマウス操作の様子がわかりにくかったため、日本語版では図中にマウスカーソルを補っています。
この他、「4.4節 AStarをゲームに用いる」のGameというサンプルのスクリーンショットも載せようかと思いましたが、動きの方が主体なので、実際にデモを体験していただいた方がよいと考えました。次のサンプルです。
http://www.oreilly.co.jp/pub/9784873114378/Chapter04/Game.html
(白いマスをクリックすると、赤いボールが、黒い障害ブロックを避けながら、クリックしたマスまで最短経路で移動します)
同様に、図があった方がいいなぁと思いつつ、いざ図にしてみても今ひとつピンとこなかったのが、「2章 操舵行動」と「6章 高度な物理演算:数値積分法」の各サンプルです。図6-8の振り子のサンプルは動きが想像しやすいので図を追加しましたが、それ以外の三角形の乗り物が動き回るようなサンプルは、中途半端に図示するよりも、動くサンプルで実際に体験していただくのが一番よいと考えました。
ぜひ、
http://www.oreilly.co.jp/pub/9784873114378/
をご覧いただければと思います。
もうすぐ本が出ます
オライリー・ジャパンから、「詳解 ActionScript 3.0 アニメーション」という翻訳本が出ます。
原著者のKeith Peters さんは、ActionScriptの神でして、この本を翻訳させていただけたことを、ありがたく思っております。
オライリーのサイト
http://www.oreilly.co.jp/books/9784873114378/
にサンプルプログラムがありますが、とくに2章の操舵行動と、6章のベレ法関係が面白いです。
http://www.oreilly.co.jp/pub/9784873114378/Chapter02/FlockTest.html
http://www.oreilly.co.jp/pub/9784873114378/Chapter06/Square2.html
原著との大きな違いは、ABA Games http://www.asahi-net.or.jp/~cs8k-cyu/ の長健太さんによるゲーム作成事例についての付録がついていることです。
構想から初めて、自ら面白さを確認しながらゲームに仕上げていく過程は、とても読み応えがあります。
ゲームは、「箱避けゲーム」といって、等角投影マップ上に現れる箱をひたすら避け続けるというものです。
http://www.oreilly.co.jp/pub/9784873114378/Chapter11/A.4.4/CollideBoxes.html
矢印キーで動きます。ちなみに私はまだハイスコアが200点台です。
翻訳の上で補ったところとか、原著のミスなどは、追って説明していきたいと思います。