tips

「tips」の編集履歴(バックアップ)一覧はこちら

tips」(2010/09/24 (金) 14:16:31) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

どこのサイトでも纏めてあるであろう、ゲーム開発のマメ知識を少々。 ---- **手抜きで外部ファイルを扱う。 外部に簡単なデータを書いて、それを読み込むプログラムって面倒ですよね。 ノベルゲームの様なスクリプタには使えませんが、今回それを簡単にする技術を紹介します。 iniファイルと呼ばれる便利なモノがありますので、それを利用します。 (※本来の使い方ではないのでご注意を。) #include <windows.h> // 引数:書き込みたいセクション、キー、数値or文字列など、ファイルの場所。 // これがiniへの書き込み WritePrivateProfileString( section , key , data , path ); // 読み込み、戻り値intで結果が返ってくる // 引数:読み込みたいセクション、キー、NULL(ここは固定)、ファイルの場所 GetPrivateProfileInt( section , key , NULL , path ); はい、たったこれだけで簡単なファイルの読み書きが出来ちゃいます。 ちなみにファイルの中身は [テストセクション] テストキー=5600 こんな感じになっています。 初回のゲーム初期化に使っても良いし、いっその事キャラクタの動きの制御(スピードだとか)に使っちゃっても良いんじゃないでしょうか。 プログラム上で「○キーを押したらデータをリロード」みたいな事を書いておけば、実行中に簡単にプレイヤーの動作を変更する事が出来ます。(スクリプトみたいな感じで) ただ、色々問題もありますので詳しくはググって見てください。 ---- **円と円の当たり判定 一番ラクに実装出来る判定です。 // Vector2Dはメンバにxy座標を持つ構造体です。 // 引数:座標1、半径1、座標2、半径2 bool HitCheak(Vector2D Pos1, float Rad1, Vector2D Pos2, float Rad2) { float floatX = Pos1.x - Pos2.x; float floatY = Pos1.y - Pos2.y; float floatR = Rad1 + Rad2; if( ( floatX * floatX ) + ( floatY * floatY ) < ( floatR * floatR ) ) { // 当たっている return true; } // 当たっていない return false; } ちなみに3D上の判定でも上記のコードが使えます。 基本的に1軸増えるだけ(Zの計算が入る)で3D空間上の円と円の判定もラクに出来ます。 ----
どこのサイトでも纏めてあるであろう、ゲーム開発のマメ知識を少々。 ---- **手抜きでそこそこキレイなエフェクト ゲーセンにあるマジアカ(クイズマジックアカデミー)を例に出します。 あれはディスプレイをタッチするとキレイなエフェクトが出ますよね。 今回はアレを手抜きで作る方法を掲載します。 プログラムで書けない事は無いと思うんですが、長くなるだろうし、面倒だと思うのでプログラム意外であのエフェクトを表現しましょう。 ムービーです。 グーグルで「パーティクルエフェクト ソフト」などで検索し、適当なパーティクル生成ソフトを入手し、ムービーでパーティクルを作成後に背景にアルファブレンドを適応してゲームに導入するだけです。 一応連番ファイルでも同じ事が出来ると思うんですが、手抜きな方法と言う事でムービーを直接使う事も出来る例として、今回取り上げました。 詳しくはムービーテクスチャでググって下さい。 ---- **手抜きで外部ファイルを扱う。 外部に簡単なデータを書いて、それを読み込むプログラムって面倒ですよね。 ノベルゲームの様なスクリプタには使えませんが、今回それを簡単にする技術を紹介します。 iniファイルと呼ばれる便利なモノがありますので、それを利用します。 (※本来の使い方ではないのでご注意を。) #include <windows.h> // 引数:書き込みたいセクション、キー、数値or文字列など、ファイルの場所。 // これがiniへの書き込み WritePrivateProfileString( section , key , data , path ); // 読み込み、戻り値intで結果が返ってくる // 引数:読み込みたいセクション、キー、NULL(ここは固定)、ファイルの場所 GetPrivateProfileInt( section , key , NULL , path ); はい、たったこれだけで簡単なファイルの読み書きが出来ちゃいます。 ちなみにファイルの中身は [テストセクション] テストキー=5600 こんな感じになっています。 初回のゲーム初期化に使っても良いし、いっその事キャラクタの動きの制御(スピードだとか)に使っちゃっても良いんじゃないでしょうか。 プログラム上で「○キーを押したらデータをリロード」みたいな事を書いておけば、実行中に簡単にプレイヤーの動作を変更する事が出来ます。(スクリプトみたいな感じで) ただ、色々問題もありますので詳しくはググって見てください。 ---- **円と円の当たり判定 一番ラクに実装出来る判定です。 // Vector2Dはメンバにxy座標を持つ構造体です。 // 引数:座標1、半径1、座標2、半径2 bool HitCheak(Vector2D Pos1, float Rad1, Vector2D Pos2, float Rad2) { float floatX = Pos1.x - Pos2.x; float floatY = Pos1.y - Pos2.y; float floatR = Rad1 + Rad2; if( ( floatX * floatX ) + ( floatY * floatY ) < ( floatR * floatR ) ) { // 当たっている return true; } // 当たっていない return false; } ちなみに3D上の判定でも上記のコードが使えます。 基本的に1軸増えるだけ(Zの計算が入る)で3D空間上の円と円の判定もラクに出来ます。 ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: