Tag : papervision3d

12 月 29 2008

Papervision3D 各バージョンのオンラインドキュメント

Posted by tanjo at 2:34 AM

拡張と改変が著しいPV3D。頼りのドキュメントが自分の使ってるバージョンと違ったりすると、思わぬ混乱を招いたりします(…しました)。
そんなわけで、各バージョンのオンラインドキュメントURLをまとめておきます。なお最近のリビジョンだと、ダウンロードしたライブラリの docs ディレクトリ以下にドキュメントが同梱されているようです。

11 月 23 2008

PV3Dでレースゲーム制作 21 - 車のモーション

Posted by tanjo at 5:04 AM

車のモデルをちゃんと作ります。直方体のままじゃあまりにも…なので。
今回はキャラクターとか乗り物に必要な、「パーツごとの動き」を追加してみました。

モデリング

モデリングは Lightwave 3D Modeler を使いました。

fdmodel

3Dオブジェクトを階層化

車モデルをそのまま1つの COLLADA で読み込むと、タイヤの回転とかが再現できません。
そこで、動かしたいパーツごとにモデルを分割して、ActionScript 側でインスタンスを再構成することで個別のモーションに対応させます。ちょうど Sprite を addChild で階層化して個別2Dアニメーションさせるのと同じようなやり方で、3Dオブジェクトも制御できちゃいます。

具体的にやりたいことは次のとおり。

  • 荷重移動でカウルが動く
  • 車の速度に応じてタイヤが回転する
  • 操作に合わせて前輪が左右に動く
  • 影は固定
  • 車全体がセットで移動する

最低限これくらいやっとけば車っぽく見えるでしょう。テールランプがあってもよかったけど。

というわけでパーツ分割は、カウル・タイヤ・影の3つなりました。
これらを包括した DisplayObject3D を作り、車全体が一緒に移動できるようにします。さらに前輪は、回転しながら左右に動かないといけないので、ここも階層化する必要がありそうです。
*DisplayObject3D は Collada のスーパークラスです。

シーン : Scene3D
+-コース : Collada
+-車 : DisplayObject3D
  +-カウル : Collada
  +-前輪 : DisplayObject3D
    +-タイヤ : Collada
  +-前輪 : DisplayObject3D
    +-タイヤ : Collada
  +-後輪 : DisplayObject3D
    +-タイヤ : Collada
    +-タイヤ : Collada
  +-影 : Collada

ソース。

//宣言---------------------------------------------------------------//
private var _scene:Scene3D;

private var _carObject:DisplayObject3D;
private var _cowl:Collada;
private var _tireFL:DisplayObject3D;
private var _tireFR:DisplayObject3D;
private var _tireR:DisplayObject3D;
private var _tire:Collada;
private var _shadow:Collada;

(略)

//カウル-------------------------------------------------------------//
//マテリアル
var cowlMaterials:Object = new Object();
cowlMaterials = {
	tx_front_jpg:new BitmapMaterial(txCarBitmap1.bitmapData),
	tx_side_jpg:new BitmapMaterial(txCarBitmap2.bitmapData),
	tx_back_jpg:new BitmapMaterial(txCarBitmap3.bitmapData),
	tx_under_png:new BitmapMaterial(txCarBitmap4.bitmapData)
};
//オブジェクト
_cowl = new Collada( cowlXML, new MaterialsList(cowlMaterials) );

//タイヤ-------------------------------------------------------------//
//マテリアル
var tireMaterials:Object = new Object();
tireMaterials = {
	tx_tire_jpg:new BitmapMaterial(txTireBitmap.bitmapData)
};
//オブジェクト
_tireFL = new DisplayObject3D();
_tire = new Collada( tireXML, new MaterialsList(tireMaterials) );
_tireFL.addChild(_tire, "tire");
_tireFL.x = -730;
_tireFL.y = 310;
_tireFL.z = 1280;

_tireFR = new DisplayObject3D();
_tire = new Collada( tireXML, new MaterialsList(tireMaterials) );
_tireFR.addChild(_tire, "tire");
_tireFR.x = 730;
_tireFR.y = 310;
_tireFR.z = 1280;

_tireR = new DisplayObject3D();
_tire = new Collada( tireXML, new MaterialsList(tireMaterials) );
_tire.x = -730;
_tireR.addChild(_tire);
_tire = new Collada( tireXML, new MaterialsList(tireMaterials) );
_tire.x = 730;
_tireR.addChild(_tire);
_tireR.y = 310;
_tireR.z = -1100;

//影-----------------------------------------------------------------//
//マテリアル
var shadowMaterials:Object = new Object();
shadowMaterials = {
	tx_shadow_png:new BitmapMaterial(txShadowBitmap.bitmapData)
};
//オブジェクト
_shadow = new Collada( shadowXML, new MaterialsList(shadowMaterials) );

//車-----------------------------------------------------------------//
_carObject = new DisplayObject3D();
_carObject.addChild(_cowl);
_carObject.addChild(_tireFL);
_carObject.addChild(_tireFR);
_carObject.addChild(_tireR);
_carObject.addChild(_shadow);

//3D登録-------------------------------------------------------------//
_scene.addChild(_carObject);

あとは車の動きに合わせて、各パーツの x, y, z, rotationX, rotationY, rotationZ あたりを操作してやればOK。この辺は理屈よりも「らしく見えるか」というセンスの問題にもなってきますね。微調整には試行錯誤しました。

デモ

レースゲームデモ画面

» ゲームをプレイする (要:Flash Player 9.0.124.0以降)

このゲームのソースファイル Main.as はこちらから参照できます。

1周走るか、ドライブ中に[C]キーを押すと、三人称カメラになって車の挙動を確認できます。

10 月 09 2008

Flash Gear Solid - PV3DでVRミッション

Posted by tanjo at 4:09 PM

Papervision3Dを使って、メタルギアソリッドのVRミッション風ゲームを作ったかたがいるようです。Papervision3Dの公式ブログでも紹介されていました。

fgs

» Flash Gear Solid VR: The NIKITA Missions

完成度、難易度ともに高し!リモコンミサイルを操り、パズル感覚でターゲットを破壊してくゲームです。オリジナルのごとく、はじめのうちはチュートリアル的な内容だけど、ステージレベルが上がるにつれどんどん難しくなっていきます。主人公が段ボール箱というのも、いいセンスだ…!

残念ながらソース等は公開されていないようですが、動作はかなりサクサクしています。良くできてる…。
ムダに重くなる3Dインターフェイスなんかより、こういう単純に楽しめるコンテンツの方がFlash 3Dと相性いいのかもしれませんね。今のところは。Flash Player 10が何かを劇的に変えてくれることを密かに期待はしてますが。

10 月 06 2008

PV3Dでレースゲーム制作 19 - リプレイ用カメラの設置

Posted by tanjo at 4:31 PM

今度の目標はリプレイモードの搭載。
まずは、TV中継のように車を追ってくれる固定カメラを設置していきます。

この辺は、私と同じく Papervision3D でレースゲームを作っているかたの記事がとても参考になりました。ほとんど同じやり方で実装してみます。
» CgInstitute Flash コミュニティー belcro - blog | d5 さんのブログ

処理の流れはこんな感じです。しかも2Dです。

  1. 配列に各カメラの座標を登録。
  2. 車の位置から最も近い座標を割り出す。
  3. その座標にカメラを移動し、車の方を向かせる。

これで車がどんな走り方をしようが、それなりに上手く追っかけてくれます。もちろんカメラの設置場所は結構吟味しましたけど。

カメラ座標の登録

配列の中に座標を示した連想配列を入れていきます。

cameraList = new Array();
cameraList[0] = new Object();
cameraList[0] = {
	x:1200,
	y:300
};

ま、手作業だと面倒くさいので、実際は例のごとく配列作成用画像を使って自動化させます。赤がFFの点を調べて push() で配列を作っていきました。

dt_course01
*赤い点が見えない。。。クリックすると拡大表示します。

最も近い点を割り出す

車の位置から1番近いカメラ座標を求めます。
候補が20個程度なら総当たりで調べてもそんなに問題なかろう…というわけで、1つずつ距離を調べて最短を割り出しています。2点間の距離(というかその2乗)を求めるために簡単な関数を作りました。

private function targetDistance2(x1:Number = 0, y1:Number = 0, x2:Number = 0, y2:Number = 0):Number
{
	var distance:Number;
	var dx:Number = x2 - x1;
	var dy:Number = y2 - y1;
	distance = dx * dx + dy * dy;
	return distance;
}

カメラをセット

リプレイ用カメラと言っても、普段使っているドライバーズ・ビューのカメラを移動させて使い回しているだけです。上で求めた座標にカメラを移動させ、そこから車が中心になるようにカメラを回転させます。今度は2点から向きを計算する関数が必要ですね。

private function targetDirection(x1:Number = 0, y1:Number = 0, x2:Number = 0, y2:Number = 0):Number
{
	var direction:Number;		//RADIAN
	var dx:Number = x2 - x1;
	var dy:Number = y2 - y1;
	direction = Math.atan2(dy, dx);			// -π ~ π
	if (direction < 0) direction += 2 * Math.PI;	// 0 ~ 2π
	return direction;
}

角度を求めるには、タンジェントの逆関数アークタンジェントを使います。
アークタンジェント?Δy=0だったときとか、対角象限の場合分けが面倒くさ~と思いきや、ActionScript 3 には Math.atan(val) のほかに、Math.atan2(y,x) ってのがあるんですね…!atan2 なら座標がどんな値でも一発で360度しっかり求めてくれます。これは便利。

ちなみに、このゲームでは疑似3Dや2Dを多用しているせいで、カメラは水平にしか振ることができません。でも意外とそれっぽい見え方にはなってくれている、はず!

デモ

レースゲームデモ画面

» ゲームをプレイする (要:Flash Player 9.0.115.0以降)

このゲームのソースファイル Main.as はこちらから参照できます。

プレイ中に [C] キーを押すとカメラモードが切り替わります。
(今までこんな直方体の車に乗っていたと!?)

10 月 04 2008

PV3Dでレースゲーム制作 18 - PV3D 2.0 Beta 1へ移行

Posted by tanjo at 7:36 PM

先日(…といっても1ヶ月以上前ですが)、Google Codeのダウンロードページにて「Papervision3D 2.0 Beta 1」のソースコードが配布開始されました。マイナーリビジョンよりは正式公開版使った方が情報共有しやすいかな、と思い rev.585 から移行します。

ちなみに最新リビジョンが公開されているリポジトリはこちら。
http://papervision3d.googlecode.com/svn/trunk/

カメラの仕様変更

シェーダはじめPV3Dの大半の機能は「使ってません」ので、移植でつまずいたのはカメラまわりくらいでした。2.0α GreatWhite(前期)から 2.0β1 のカメラ仕様変更点とかを私なりにまとめておきます。
» 以前のカメラについてはこちらのエントリ

まず大きな変更は、Camera3D, FreeCamera3D, FrustumCamera3D の3つが統合されて(新)Camera3D になったこと。
基本的には以前の FrustumCamera3D をベースにしたような感じでしょうか。コンストラクタは以下。

Camera3D(
	fov:Number = 60,
	near:Number = 10,
	far:Number = 5000,
	useCulling:Boolean = false,
	useProjection:Boolean = false
);
  • fov(Field of View)は視野角。デフォルトは60度。
  • near, far はクリッピング平面までの距離。ただし useCulling か useProjection を設定しないと描画には反映はされません。
  • near は focus と同期を取るような仕様になっています。near を変更すると投影が変わってしまうので要注意です。

useCulling, useProjection はどちらも投影空間(視錐台)の外を間引く効果があるっぽいけど、まだ具体的な処理は確認していません。どう使い分けるのやら。

ソースを見ると useCulling は FrustumCuller クラス、useProjection は Matrix3D クラスを使っているようですが。。ベンチマークしてみても負荷の違いはほとんどありませんでした。
しかも、私の環境だと useCulling が機能しないことがあったので、とりあえず useCulling = false, useProjection = true で作業しています。

そんでもって、移植にあたって気づいた点とか。

  • 以前の FrustumCamera3D にあった Rotation系プロパティが代入しても反映されないバグは解消されています。
  • 一方、コンストラクタで fov が受け渡せないバグがあるようなので、Camera3D.as(org.papervision3d.cameras.Camera3D)のソース、コンストラクタ部分に以下のような行を追加しておきました。(参考:note.x | [PV3D2.0] Updated to beta 1
    this.fov = fov;
    
  • near が focus のエイリアスになってしまった…ということは、レンダリング分けの回で使った「遠くの方だけ描画する」という妙なテクが使えなくなってしまいました。
    しかたなく near と focus を切り分けたクラスを作って対処しています。
    即席ソース » FrustumCamera3D.as

9 月 27 2008

PV3Dでレースゲーム制作 17 - 画質切り替え機能

Posted by tanjo at 11:23 PM

モデル切り替え描画で遠くまで表示できるようになったのはいいけど、それでもやっぱり処理は重くなってきていますね。一気にパフォーマンスを上げるには、画質を犠牲にするしかないっ!
そんなわけで、今までどおりの通常描画モードに加え、パフォーマンス重視のモードを追加してみました。

パフォーマンスモードでは、

  • Flash Playerのレンダリング品質は「低」
  • 3D描画部分の解像度を 1/2 にする
  • 3Dのクリッピング距離を少しだけ狭くする

という感じに調整。

ポリゴン数をなるべく削らずにパフォーマンスを上げるには、Viewport3D の解像度を落としてやるのが効果的です。まあ画質「低」とあいまって、ガッビガビになりましたけど。

quality

気をつけなければいけなかったのは、低解像度の Viewport3D を通常サイズまで拡大するために1回ビットマップに落とし込んでやる必要があるってこと。BitmapData.draw を使って3D描画をキャプチャし、キャプチャしたビットマップを拡大させて等寸・低解像度の状態を作っています。

デモ

レースゲームデモ画面

» ゲームをプレイする (要:Flash Player 9.0.115.0以降)

このゲームのソースファイル Main.as はこちらから参照できます。

描画モードを切り替えるには、プレイ中に [Q] キーを押してください。
劇的、とまではいかないとしても、私の環境だと通常の60%くらいに負荷が下がりました。

9 月 23 2008

PV3Dでレースゲーム制作 16 - 距離に応じたレンダリング切り替え

Posted by tanjo at 3:45 PM

カメラからの距離に応じて、近くは精密なモデルを、遠くの方はザックリとしたものを表示分けできるようにします。もちろん Papervision3D にそんな都合の良いピンポイント機能はありません! FrustumCamera3D のニア・クリップを活かしてなんとか再現します。

(訂正)
サーセン。大嘘でした。
PV3D 2.0 Beta 1あたりで追加された SimpleLevelOfDetail を使えばカメラからの距離に応じて3Dオブジェクトを切り替えたりできます。
しかし!残念なことにオブジェクト単位の判定しかできない模様。私のように環境全体を1つの3Dモデルで作っちゃってる場合には使えませんね。環境全部が一気に入れ替わってしまいますから。

SimpleLevelOfDetail については、ぽりGさんのブログにデモ付きの解説があります。
» flashゲーム作成記 | PV3D:Beta版の機能をいろいろ調べてみた

建物を増やすには

今のコースだとそれほど意味はないけど、市街地みたいなコースを作るにはかなり重要になってきそうです。(超広大3Dを実現しているゲーム「Grand Theft Auto」からヒントを得ました。なんて言ったら大げさかな。)

どういうことかちょっと詳しく書きますと…
現行( » 前回デモ)では以前のエントリで書いたように FrustumCamera3D (PV3D最新版では Camera3D に統合)を使ってファー・クリッピングすることで、巨大な3D空間を限られた処理内で実現しています。
でもこれだけだと、遠くからも見えて欲しい建物もパイロンのような小さなオブジェクトも、同じ距離で判定されてしまいます。市街地を作るにはある程度遠くの建物も表示する必要がありますが、そうすると細かいオブジェクトのポリゴン数がやたらと増えて、処理のネックになっちゃうわけです。

3次元クリップ&2次元合成

そこで、3Dオブジェクトのレンダリングを、「すべての要素を描画する近距離」、「アバウトでいいから大きな建物だけ遠くまで表示する遠距離」の2つに分けることにしました。
具体的には、Camera3D や Scene3D を複数使い分けることで実現します。たとえば…

距離 Scene3Dにあるオブジェクト Camera3Dのクリップ Viewport3D描画順
すべての要素を含む精細モデル near=10, far=22000 最後に addChild
大きなものだけを含む簡易モデル near=13000, far=40000 先に addChild

viewport同士の合成は2次元の処理になります。つまり、「中距離~遠距離をレンダリングしたレイヤー」の上に、「カメラすぐ~中距離までのレイヤー」を重ねたような状態です。2D合成でも距離の順序は保たれているから無問題!なお床面はこれらとは別に、1番最初に描画しています。

近カメラの far と遠カメラの near が同じ値じゃないのは、近・遠距離の間に描画抜けが出ないように調整したため。こんなに重複させないといけないとは。。。

文字の説明だとわかりにくかったですね。
こういう描画になっています。この3つを合成。

synthe

本来なら、(同じカメラを使って)3Dオブジェクトごとにどのくらいの距離まで表示させるか設定できれば良かったんですけどね、最近のFPSみたいな感じに。残念ながらPV3Dでそういう描画は無理そうだったので2D合成でカバーしました。
近距離/遠距離用で2種類のモデルを読み込まなきゃいけなくなるのは難点だけど、まず当面はパフォーマンスの確保が優先、と。

デモ

レースゲーム・デモ画面

» ゲームをプレイする (要:Flash Player 9.0.115.0以降)

このゲームのソースファイル Main.as はこちらから参照できます。

相当注意深く見ないと何が変わったのか全然分かりませんね…。第1コーナーを曲がったあととか最終コーナーの緑色の建物とかはまだ分かりやすいでしょうか。遠くの色が薄い状態の建物が、今回追加した遠距離レンダリングです。

8 月 23 2008

PV3Dでレースゲーム制作 12 - 3Dモデル読み込み編

Posted by tanjo at 8:41 PM

以前、SWFに埋め込んだ3DモデルをPapervision3Dで使用する方法を紹介しましたが、実は、ローダで読み込んでから描画するのも同じようなやり方でできます。
ゲーム的にも外部からロードした方が勝手が良さそうだし、今後はこっちを採用する方向でいきます。

*PV3DでCOLLADAを表示できた状態を基準に書いてます。COLLADAを表示方法はこちら
*以下、共通部分は以前の記事のコピペです。

それでは、手順を追っていきましょう。(ところどころ用語が間違ってたらすいません…。)
Papervision3D のマテリアルリストを使うので、まずはクラスをインポート。

import org.papervision3d.materials.utils.MaterialsList;

3DモデルのDAEファイルとテクスチャ画像を読み込み、それぞれ XML と Bitmap にインスタンス化しておきます。
参照:PV3Dでレースゲーム制作 11 - AS3で複数のファイルをロードする
↓↓インスタンス作成部分の抜粋。(宣言は割愛してます。)

courseXML = XML(loaderArray[0].data);
txMainBitmap = Bitmap(loaderArray[1].content);
txTreeBitmap = Bitmap(loaderArray[2].content);
txItemBitmap = Bitmap(loaderArray[3].content);

次にマテリアルの作成。

var mdCourse01Materials:Object = new Object();
mdCourse01Materials = {
	t_all_jpg:new BitmapMaterial(txMainBitmap.bitmapData),
	t_all_jpg_2:new BitmapMaterial(txMainBitmap.bitmapData),
	t_tree_png:new BitmapMaterial(txTreeBitmap.bitmapData),
	t_item_jpg:new BitmapMaterial(txItemBitmap.bitmapData)
};

テクスチャの Bitmap を元に、マテリアル用の Object へ BitmapMaterial を登録していきます。
ここで注意点!Object のキーは、COLLADAのマテリアル名を使います。(赤文字部分。記述は順不同でOK。)
ですので、もしマテリアル名に妙な記号とか2バイト文字とかが入ってる場合は、あらかじめCOLLADAを修正しておかなければなりません。
マテリアル名は、Blender(COLLADAインポート)ではアニメーションビュー、球体アイコンで確認できます。

COLLADAのXML内では material タグに定義されています。

<library_materials>
	<material id="t_all_jpg" name="t_all_jpg">
...

ただしここ以外の場所からもid名を参照していたりするので、手作業で名前を変更するときは、検索してそれらを一括で変えてあげないとダメかもしれません。

さてASに戻り、最後に3Dオブジェクト作成。

courseObjects = new Collada( courseXML, new MaterialsList(mdCourse01Materials) );

Collada() メソッドの第1引数に読み込んだ XML インスタンス、第2引数に先ほどの Object から作った MaterialsList を指定すればOK。

あとはいつもどおり、Collada を Scene3D に addChild して、renderScene で描画するだけ。(→参照
今回もゲーム的には進展なしなので、デモとかはありません…!

8 月 14 2008

PV3Dでレースゲーム制作 10 - 3Dモデル埋め込み編

Posted by tanjo at 11:14 PM

今までは何も考えずCollada生成のタイミングでDAEファイルにアクセスしていましたが(下記ソース)、これだと描画までに妙なタイムラグができてしまい、ウェブ公開向きの状態ではありませんね。

//3Dモデル作成
courseObjects = new Collada("assets/md_course01.dae");

対処としては、モデルデータ自体をSWFに埋め込む方法と、モデルデータのローディングイベントを用意する方法の2つがあると思います。
今回はモデルデータ一式をSWFに埋め込む方法について。「一式」と書いたのは、DAE本体だけでなく、DAEが指定しているテクスチャの画像ファイルも一緒に埋め込む必要があるからです。

参考にしたサイト

それでは、手順を追っていきましょう。(ところどころ用語が間違ってたらすいません…。)
Papervision3D のマテリアルリストを使うので、まずはクラスをインポート。

import org.papervision3d.materials.utils.MaterialsList;

コンストラクタの前にCOLLADAとテクスチャを Embed しておきます。

[Embed(source = "embed/md_course01.dae", mimeType = "application/octet-stream")]
private var mdCourse01:Class;

[Embed(source = "embed/tx_main.jpg")]
private var txMain:Class;

[Embed(source = "embed/tx_tree.png")]
private var txTree:Class;

[Embed(source = "embed/tx_item.jpg")]
private var txItem:Class;

このようにテクスチャ画像が複数あるときは、すべて Embed しておく必要があります。
ちなみに Loader とかで読み込むファイルはSWFのパスが基準、一方 Embed はソースの場所が基準になります。作業ディレクトリを分けてるときは要注意です。

次にマテリアルの作成。

var txMainBitmap:Bitmap = new txMain() as Bitmap;
var txTreeBitmap:Bitmap = new txTree() as Bitmap;
var txItemBitmap:Bitmap = new txItem() as Bitmap;
var mdCourse01Materials:Object = new Object();
mdCourse01Materials = {
	t_all_jpg:new BitmapMaterial(txMainBitmap.bitmapData),
	t_all_jpg_2:new BitmapMaterial(txMainBitmap.bitmapData),
	t_tree_png:new BitmapMaterial(txTreeBitmap.bitmapData),
	t_item_jpg:new BitmapMaterial(txItemBitmap.bitmapData)
};

Embed 時に作成したクラスから、Bitmap インスタンスを作成します。そしてこれらを元に、マテリアル用の Object に BitmapMaterial を登録していきます。
ここで注意点!Object のキーは、COLLADAのマテリアル名を使います。(赤文字部分。記述は順不同でOK。)
ですので、もしマテリアル名に妙な記号とか2バイト文字とかが入ってる場合は、あらかじめCOLLADAを修正しておかなければなりません。
マテリアル名は、Blender(COLLADAインポート)ではアニメーションビュー、球体アイコンで確認できます。

COLLADAのXML内では material タグに定義されています。

<library_materials>
	<material id="t_all_jpg" name="t_all_jpg">
...

ただしここ以外の場所からもid名を参照していたりするので、手作業で名前を変更するときは、検索してそれらを一括で変えてあげないとダメかもしれません。

さてASに戻り、最後に3Dオブジェクト作成。記事冒頭のソース部分の置き換えです。

courseObjects = new Collada( XML(new mdCourse01()), new MaterialsList(mdCourse01Materials) );

Collada() メソッドの第1引数にモデルクラスのインスタンスを XML にキャストしたもの、第2引数に先ほどの Object から作った MaterialsList を指定すればOK。Collada() に直接DAEファイルを指定したときと同じ物が生成されるはずです。

あとはいつもどおり、Collada を Scene3D に addChild して、renderScene で描画するだけ。(→参照
今回はゲーム的には進展なしなので、デモとかはありません…!

8 月 04 2008

Papervision3Dでレースゲーム制作 09 - コンセプトバージョン完成

Posted by tanjo at 3:48 AM

仮題「PV3D Racing “Concept-α”」が完成しました!

PV3D Racing “Concept-α”

レースゲーム・デモ画面

ゲームをプレイする (要:Flash Player 9.0.115.0以降 / 読み込むのに少し時間がかかります)

まだ遊ぶための要素がないし、ローディングすら実装されていない状態ですが、でも、とりあえず ActionScript 3.0 + Papervision3D でこんな感じのレースゲームが作れますよ、っていうのが伝わるレベルにはなったと思います。

ダウンロード版

ダウンロード版の方が若干軽く動作します。またフルスクリーンモードにも対応しています。内容は同じです。

ダウンロードする (2.0MB)

ダウンロード版をプレイするには、Flash Player 9 (standalone) が必要です。スタンドアロン版の Flash Player は、Adobe Flash Player - Downloads のページにて無償で配布されています。 (ページ内、Flash Player 9 Projector というリンクです。)

メイキング

このゲームの制作に使ったソフトウェアとライブラリ。

*このゲームのソースファイル Main.as はこちらから参照できます。

レースゲーム制作記(当ブログ内)

Next »