ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

プロジェクト3

タイトルロゴ

タイトル画面の制作に、WEB上のロゴメーカーを使ってみた。最近のWEB2.0の影響なのか、WEB上で作成できるものが多くなった気がする。ありがたく使わしてもらう。 ただ、今回使ったロゴメーカーは自分のイメージに近いロゴを作成することが出来たのだけれども…

サウンドの再生方法変更

サウンドの再生方法を変更して、自分が最初に意図したとおりに鳴らせたことを確認。 あとは本番用のサウンドデータを作らねば。

サウンド作り

MIDIでサウンドを作っているのだけれども、内蔵の音源ではドラムの音が軽くてイメージにあっていない。どこかにいいドラムの音は無いものか。 なかなか難しいなぁ。

ループサウンド

サウンドデータの制作にと、Acidのフリー版をダウンロードしてインストールしてみた。使ってみたところ、フリー版にはループ素材が付いてないことに気が付いた。 ということで、フリーのループ素材を探し中。なかなかイメージにあったものが見つからない。

誘導弾クラスの修正

SEを鳴らすアルゴリズムの変更に合わせて誘導弾のクラスも修正。というか以前の形式に戻した。 subversionをインストールしていながら、最近は修正内容をコミットしていなかったので、手作業で戻した。ちゃんと細かくコミットするようにしないとsubversionを…

サウンドのずれ

テスト用のサウンドデータを作成して組み込んでみたら、SEを再生するときにすこしずれが生じてしまうことが分かった。ちょっとアルゴリズムを変更しないといけないようだ。いろいろとテストしてみないと。

誘導弾の改良

引き続き、ちまちまのプログラムの改良。 誘導弾の部分を改良して、SEを鳴らすように変更。SEとかテクスチャなどのリソースの扱いについてはいつも結構悩んでしまう。

メモリ解放

ちまちまとプログラムを改良している。 新しいオブジェクトをnewで作ったときはついつい解放しなくてはと思ってしまう。まだC#に慣れていないようだ。

誘導弾の改良

現在のプロジェクトにあうように誘導弾を改良。

弾の発生方法を変更

最初に考えていた誘導弾の発生を別の方法に変更することに。 そのため、今は自機が持っている弾の情報をメインタスクに持つように変更。 細かい仕様を決めないでいきなりコーディングを始めているから、頻繁にクラスの設計が変わったりしている。他の人たち…

音の素材

プロジェクト3で使うための音の素材を探しているが、目的にあったものが見つからない。 うーん、やっぱり自分で作らないとならないのか。

弾を消すその2

弾を消すルーチンが間違っていて、継承した先ではうまく動作していなかったのを修正。 弾を外から消すためには、その弾への参照を保持していなければならないわけだが、それをどこで持つべきかで悩む。今回のプロジェクトでは自機が弾の作成や削除をコントロ…

弾を消す

弾が画面外に出たり、自機に当たったときにはタスクを終了するようにしていたのだが、それ以外には弾が消える方法が無かった。弾を強制的に消したい状況が出てきたので、外からタスクを終了するKillメソッドを追加。内部でフラグを持ち、タスク実行時にフラ…

ホーミング弾出現

今までホーミング弾はテストのためランダムな位置で出現するようにしていたけど、現在の自機の位置から一番遠い角から出現するように変更。

テクスチャ素材をアルファ付きPNGへ変更

さっそく完成したツールでアルファ付きPNGを作成し、制作中のプロジェクトで描画してみたところ、ばっちりアルファ付きで描画できた。 さて、これからの問題は素材を作るということ。

誘導弾その3

誘導弾の方向転換の角度を制限するアルゴリズムをシューティングゲームアルゴリズムマニアックスでは角度を求めずに内積の比較で行っていた。なるほどねぇ。それにこちらのほうが処理的にも軽そうだ。 こういうアルゴリズムをぱっと思いつけるようにならない…

速度ベクトルの描画

誘導弾の方向転換の角度に制限をつけて誘導を弱くしているのだが、どうも角度の計算がどこかで間違っているらしくうまくいっていない。ということで現在の速度ベクトルを描画するようにして、確認することにした。 この日記を始めてから、こうやってデバッグ…

弾の速度ベクトル

今までは、弾の移動方法を移動方向を角度で持ち、次の座標を計算していたのだが、いろいろと不都合が出てきたので角度ではなく速度ベクトルで表現することにした。

誘導弾その2

ターゲットへの方向転換を毎回行うのではなく、数フレームに1回行うようにしてみた。案の定、ギクシャクした感じの動きで全然誘導弾っぽくなかった。やっぱり方向転換の角度を制限するほうが良さそうだ。

誘導弾

誘導弾を作成。 毎フレーム自機の座標へ方向転換するようにしたので、確実に自機に向かってくる。当然絶対避けられない弾に。 避けられる程度に誘導するにはどうしたらよいのだろう。方向転換の角度に制限をつけたり、毎フレーム行っている方向転換の頻度を…

弾のベースクラス

弾のベースとなるクラスを作成。クラスは座標、移動量、移動方向、ターゲットをメンバに持つ。画面外に出たかどうか、ターゲットに当たったかどうかを判定するメソッドを持つ。派生させたクラス側ではどのように移動するかを記述する。 現在は弾が発生したと…

さまざまな弾

自機を狙う単純な弾はできたので、これからはいろんな種類の弾を作っていこうと思う。 まずは共通な部分を抜き出してベースにして、そこから派生させていこう。

仮タイトル画面

シーンタスクとしてタイトル画面を作成して追加。sceneControllerのJumpSceneでタイトルとメインが正しく切り替えられることを確認。 まだ仮タイトルなので、フォントを使ってテクスチャを作成して表示。ところが最初はうまくいかなかった。結局、テクスチャ…

SceneFactoryの修正

ゲームメインのタスクはsceneController.TaskFacotryに設定するSceneFacotryクラスのCreateTask()で行われる。 今まではゲームメインのタスクのコンストラクタは何も受け取っていなかったが、コンストラクタで画面情報を受け取りたかったので、サンプルゲー…

当たり判定その3

結局、当たり判定は弾側で行い、自機に当たったかどうかのフラグを持って、当たったらそのフラグをセットすることにした。自機はタスクの中でフラグをチェックして、フラグが立ったら自機のタスクは終了。

持ってて良かったC MAGAZINE

C MAGAZINEにタスクを使ったシューティングゲームを作る記事が載っていたことを思い出し、さっそく引っ張り出してきて読む。 サンプルでは自機タスク側ですべての弾との当たり判定を取っていた。で弾が当たったときには耐久力を減らし、ゼロになったら爆発の…

当たり判定その2

当たり判定を実装し、弾が当たったかどうかは分かるようになったのだが、当たった後の処理はどのようにすればよいのだろう。どうやればよいのかいまいちいい方法を思いつかない。 自機のタスクに当たったことを受け取るメソッドを作って、それを呼べばよいの…

当たり判定

各キャラクターは正方形なので、単純に自機と弾の距離で当たり判定を取ることにした。自機の大きさの半分より弾が近づいたら当たったとした。 今回は弾側で判定を取るようにしてみた。

タスク数の取得

狙い撃ち弾ができたと思っていたら、タスクを作りっぱなしで終了させるのを忘れていた。画面外に出たらタスクを終了するように修正。 またこういうことが無いように、現在のタスク数を表示して確認できるようにした。タスク数の取得は次のようにして行った。…

狙い撃ち弾その2

狙い撃ち弾をいくつも表示していると、自機を正確に狙っていない弾があることに気が付いた。調べてみると座標をintで持っていたので、進行方向のベクトルの小数点以下が切り捨てられてしまっていた。座標をfloatで持つようにして無事正確に狙うようになった…