詳解 ActionScript 3.0アニメーション
――衝突判定・AI・3DからピクセルシェーダまでFlash上級テクニック

[cover photo]
オライリー・ジャパンで書籍を購入:
定価4,104円

Ebook Storeで電子版を購入:
価格3,283円

ActionScript 3.0でアニメーションを作成するための上級テクニックを詳解。複雑な形状や大量のオブジェクト間の衝突判定、経路探索・操舵行動・群行動といった強力な AI(人工知能)、より正確な物理演算を実現する数値積分法、等角投影法による3D空間のシミュレーション、Flash Player 10から備わった3D機能やピクセルシェーダ機能など、ActionScript 3.0アニメーションの高度なテクニックを豊富な事例を通じて身につけることができます。日本語版では本書で紹介するテクニックを使ったゲーム制作について“ABA Games”さんに寄稿いただきました。

●本書で取り上げるアニメーション(サンプルコードは「関連ファイル」タブページからダウンロード可)。
●“ABA Games”さんによる箱避けゲーム。[A]で開始、矢印キー(もしくは[A][S][D][W]キー)で動きます(最初にフィールドをクリックして下さい)。

翻訳者の相川氏のブログには、本書の追加情報や関連する技術情報が掲載されています。

関連書籍

Flash Hacks
ゲーム開発者のためのAI入門
詳説 ActionScript 3.0
実例で学ぶゲーム3D数学
実例で学ぶゲームAIプログラミング
ビジュアライジング・データ

日本語版に寄せて
訳者まえがき「神の書、ふたたび」
はじめに
1章 高度な衝突判定
    1.1 不規則な形状のオブジェクトの衝突判定
        1.1.1 衝突判定のためのビットマップ
        1.1.2 半透明の形状の衝突判定
        1.1.3 ビットマップ以外へのBitmapData.hitTestの使用
    1.2 大量のオブジェクトの衝突判定
        1.2.1 格子に基づく衝突判定の実装
        1.2.2 格子を実装する
        1.2.3 測定と高速化
        1.2.4 再利用可能なクラス化
        1.2.5 衝突判定以外への応用
    1.3 まとめ
2章 操舵行動
    2.1 行動
    2.2 Vector2Dクラス
    2.3 Vehicleクラス
    2.4 SteeredVehicleクラス
        2.4.1 追求行動
        2.4.2 逃避行動
        2.4.3 到着行動
        2.4.4 追跡行動
        2.4.5 回避行動
        2.4.6 徘徊行動
        2.4.7 物体回避
        2.4.8 経路追跡
    2.5 群行動
    2.6 まとめ
3章 等角投影
    3.1 等角投影と2等角投影
    3.2 等角投影図を作成する
    3.3 等角変換
        3.3.1 ワールド座標を画面座標に変換する
        3.3.2 画面座標からワールド座標への変換
        3.3.3 IsoUtilsクラス
    3.4 等角投影オブジェクト
    3.5 奥行きソート
    3.6 等角投影ワールドクラス
    3.7 3D上の移動
    3.8 衝突判定
    3.9 外部の画像を用いる
    3.10 等角投影タイルマップ
    3.11 まとめ
4章 経路探索
    4.1 経路探索の基本
    4.2 A*(Aスター)
        4.2.1 A*の基本
        4.2.2 A*アルゴリズム
        4.2.3 コストの計算
        4.2.4 アルゴリズムの見える化
        4.2.5 コード化する
        4.2.6 一般的なA*の発見的手法
    4.3 AStarクラスの利用
        4.3.1 経路を改善する:角
    4.4 AStarをゲームに用いる
    4.5 高度な領域設定
    4.6 まとめ
5章 代替入力:カメラとマイク
    5.1 カメラとマイク
    5.2 入力としての音声
        5.2.1 音声制御ゲーム
        5.2.2 アクティビティイベント
    5.3 入力としてのビデオ
        5.3.1 ビデオの大きさと品質
        5.3.2 ビデオとビットマップ
        5.3.3 ピクセルを解析する
    5.4 まとめ
6章 高度な物理演算:数値積分法
    6.1 数値積分法と、オイラー積分法が悪い理由
    6.2 ルンゲ・クッタ法
        6.2.1 時間ベースの運動
        6.2.2 2次ルンゲ・クッタ法(RK2)の実装
        6.2.3 4次ルンゲ・クッタ法(RK4)の実装
        6.2.4 弱いつながり
        6.2.5 ルンゲ・クッタ法のまとめ
    6.3 ベレ法
        6.3.1 ベレ点
        6.3.2 ベレ棒
        6.3.3 ベレ構造物
        6.3.4 蝶番
        6.3.5 さらに一歩進めて
    6.4 まとめ
7章 Flash 10の3D機能
    7.1 Flash 10 3Dの基本
        7.1.1 消失点の設定
    7.2 3D配置
        7.2.1 奥行きソート
        7.2.2 3Dコンテナ
    7.3 3D回転
    7.4 視野と焦点距離
    7.5 画面と3D座標
    7.6 何かを指し示す
    7.7 まとめ
8章 Flash 10の描画API
    8.1 パス
        8.1.1 簡単なお絵かきプログラム
        8.1.2 曲線の描画
        8.1.3 ワイド描画コマンドとNO_OP
        8.1.4 ワインディング
    8.2 三角形
        8.2.1 ビットマップによる塗りつぶしと三角形
        8.2.2 三角形と3D
    8.3 グラフィックスデータ
    8.4 まとめ
9章 Pixel Bender
    9.1 Pixel Benderとは?
    9.2 ピクセルシェーダを記述する
    9.3 データ型
    9.4 現在のピクセル座標を得る
    9.5 パラメータ
        9.5.1 高度なパラメータ
    9.6 入力画像をサンプリングする
        9.6.1 線形サンプリング
    9.7 Flash用の回転シェーダ
    9.8 Pixel BenderのシェーダをFlashで用いる
        9.8.1 シェーダの読み込みと埋め込み
        9.8.2 シェーダを塗りつぶしに利用する
        9.8.3 Flashからシェーダのメタデータをアクセスする
        9.8.4 Flashからシェーダのパラメータを設定する
        9.8.5 シェーダによる塗りつぶしを変形する
        9.8.6 シェーダによる塗りつぶしをアニメーション化する
        9.8.7 シェーダの入力画像を指定する
    9.9 シェーダをフィルタとして利用する
    9.10 ブレンドモードにシェーダを利用する
    9.11 まとめ
10章 トゥイーンエンジン
    10.1 FlashのTweenクラス
        10.1.1 イージング関数
        10.1.2 トゥイーンを合成する
    10.2 FlexのTweenクラス
        10.2.1 Flex Tweenクラスのイージング関数
        10.2.2 複数のトゥイーン
        10.2.3 トゥイーンシーケンス
    10.3 トゥイーンエンジン
    10.4 Tweener
        10.4.1 Tweenerでのイージング関数
        10.4.2 Tweenerでの複数のトゥイーン
        10.4.3 Tweenerでのトゥイーンシーケンス
    10.5 TweenLite/TweenGroup
        10.5.1 TweenLiteのイージング関数
        10.5.2 TweenLiteでの複数のトゥイーン
        10.5.3 TweenLite/TweenGroupでのトゥイーンシーケンス
    10.6 KitchenSync
        10.6.1 KitchenSyncのイージング関数
        10.6.2 KitchenSyncで複数のオブジェクト/プロパティをトゥイーンする
        10.6.3 KitchenSyncのトゥイーンシーケンス
    10.7 gTween
        10.7.1 gTweenのイージング関数
        10.7.2 gTweenで複数のオブジェクトをトゥイーンする
        10.7.3 gTweenのトゥイーンシーケンス
    10.8 まとめ
付録A ActionScriptアニメーション技法を使って作る箱避けゲーム
    A.1 箱避けゲームを作ろう
        A.1.1 ゲームの作り方
        A.1.2 箱避けゲームはどのように作る?
    A.2 等角投影で箱を動かす
        A.2.1 フィールドを作る
        A.2.2 箱の出現と移動
        A.2.3 箱の影の描画
    A.3 格子に基づく衝突判定を使った箱の跳ね返り
        A.3.1 箱の衝突判定
        A.3.2 箱の跳ね返り処理
    A.4 ゲームとしての形を整える
        A.4.1 プレイヤーの追加
        A.4.2 箱のバリエーション
        A.4.3 難易度設計
        A.4.4 タイトルやゲームオーバー
        A.4.5 さらなる拡張案
索引

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

■P.2 上から18行目
  • 【誤】 Boolen
  • 【正】 Boolean
■P.31 上から7行目(リスト中コメント)
  • 【誤】 // iにオブジェクトがなければ、マスを生成する
  • 【正】 // indexにオブジェクトがなければ、マスを生成する
■P.33 上から15行目(リスト中コメント)
  • 【誤】 // iにオブジェクトがなければ、マスを生成する
  • 【正】 // indexにオブジェクトがなければ、マスを生成する
■P.41 上から6行目(リスト中のアンダースコアをマイナスに訂正)
  • 【誤】 particle.x = stage.stageWidth _ 1;
  • 【正】 particle.x = stage.stageWidth - 1;
■P.41 上から14行目(リスト中のアンダースコアをマイナスに訂正)
  • 【誤】 particle.y = stage.stageHeight _ 1;
  • 【正】 particle.y = stage.stageHeight - 1;
■P.44 上から1行目(リスト中のアンダースコアをマイナスに訂正)
  • 【誤】 particle.x = stage.stageWidth _ 1;
  • 【正】 particle.x = stage.stageWidth - 1;
■P.44 上から9行目(リスト中のアンダースコアをマイナスに訂正)
  • 【誤】 particle.y = stage.stageHeight _ 1;
  • 【正】 particle.y = stage.stageHeight - 1;
■P.114 脚注(下から3行目)
  • 【誤】 tile.position = new Point3D(x * 20, 0, y * 20);
  • 【正】 tile.position = new Point3D(x * 20, 0, z * 20);
■P.175 上から24行目(セミコロンの抜けを訂正)
  • 【誤】 graphics.endFill()
  • 【正】 graphics.endFill();
■P.189 脚注(下から4行目)
  • 【誤】 音響スペクトルの計算はSoundMixer.computeSpectrumを使えば可能です。
  • 【正】 削除

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]