ミニDTL.xna “ゲームはイチニチ30分まで!” 第12回
ミニDTL.xnaその12です。
9/1に配信した分です。今回は、敵キャラの種類の追加と、自機のモデリングを行いました。
敵の種類を作る
ずーっと飾り気のない敵1種類だったので、新しい敵を追加してみました。
まず今まで具体クラスだったEnemyを敵の基底クラスにして、今までの敵をEnemyCクラスにしました。
また新たにEnemyのサブクラスであるEnemyAを作り、色を黒にして、弾を撃つ際の間隔を無くしてみると

新しい敵テスト
凶悪な敵ができました。
プログラム自体は、ほぼコピペの作業しかしていないので割愛。
一点、ポリモーフィズムで呼ばれる基底クラスのメソッドにはvirtualをつける必要があることを忘れていて、Drawのオーバーライドでてこずりました。ActionScript秒です。
DoGAを使ってモデルデータを作る
DoGAは3DCGの入門用のソフトです。簡単なモデラーDoGA-L1のサンプルライブラリが便利なので利用してみましょう。

DoGA L1で自機を作る
[パーツ]-[パーツ追加]を押すとサンプルライブラリが出てくるので、まずは自機っぽい形を選んで配置します。これだけ。

自機できた
ファイルメニューから[エクスポート]-[Direct3D データ出力(三角形化)]で出力。拡大率を聞かれますが、この状態では見当が付かないのでそのままでOKです。ファイル名はFighter.xとしました。
VisualStudioに戻り、まずソリューションエクスプローラのContentからもう使わないFighter.pngを取り除きます。その後追加→既存の項目を追加で先ほどのモデルを選択。
読み込んで表示するコードを書きます。
まず変数宣言。Model型一つに収まります。
- private static Model model;
次にモデル読み込み。
- public static void LoadContent() {
- model = Game.Content.Load<Model>("Fighter");
- }
最後に描画。
- public override Draw(GameTime gameTime) {
- foreach (ModelMesh mesh in model.Meshes) {
- foreach (BasicEffect effect in mesh.Effects) {
- effect.EnableDefaultLighting();
- effect.Projection = screenInfo.ProjectionMatrix;
- effect.View = screenInfo.ViewMatrix;
- effect.World =
- Matrix.CreateRotationY(item.Roll) *
- Matrix.CreateTranslation(item.Position.X, item.Position.Y, 0);
- }
- mesh.Draw();
- }
- }
思ったより簡単です。
が、実行しても何も表示されません。モデルが小さすぎたようなので、拡大します。
Contentに追加したFighter.Xを選択してプロパティを表示します。
Content ProcessorのサブアイテムにScaleがあるので適宜大きい値にします。
また、表示したモデルの向きが気に入らないときは* Axis Rotationで回転することもできます。
これらを適切に調整して実行。

自機が出た
無事、自機の3Dモデルが出ました。よく見たら裏表なので全然無事ではないですが。
続きます。
タグ: DeskTopLive, desktoplivexna, MiniDTL, XNA
2009 年 9 月 8 日 12:20 AM
[...] ミニDTL.xna “ゲームはイチニチ30分まで!” 第12回 [...]