トップページ > 記事閲覧
シューティングゲームの弾の座標
名前:おっきいパンチャン 日時: 2015/10/19 19:58

DXライブラリ シューティングゲームについて 今、趣味でDXライブラリのホームページにあるシューティングゲームの開発講座を見ながらプログラミングをしています。 弾を発射させるところで、少し理解ができない部分があったので、質問させてください。 まずはソースコードの一部を↓ int WINAPI WinMain(HINSTANCE h1, HINSTANCE hP, LPSTR lpC, int nC) { int YusyaX, YusyaY, YusyaGraph; // 自機の座標と画像 int YasuikiX, YasuikiY, YasuikiMuki, YasuikiGraph; // 敵の座標と画像と向き int ShotX, ShotY, ShotFlag, ShotGraph; // 弾の座標と画像 // 画面モードの設定 SetGraphMode(640, 480, 16); // グラフィックの描画先を裏画面にセット SetDrawScreen(DX_SCREEN_BACK); // 自機のグラフィックをメモリにロード&表示座標をセット YusyaGraph = LoadGraph("media\\smp1_chara01.png"); YusyaX = 288; YusyaY = 400; // 敵のグラフィックをメモリにロード&表示座標をセット YasuikiGraph = LoadGraph("media\\smp1_chara02.png"); YasuikiX = 0; YasuikiY = 50; // 弾のグラフィックをメモリにロード ShotGraph = LoadGraph("media\\Shot.png"); // 弾が画面上に存在しているか保持する変数に『存在していない』を意味する0を代入しておく ShotFlag = 0; // 敵の移動方向をリセット YasuikiMuki = 1; // 移動ルーチン while (1) { 中略 // スペースキーを押して弾を発射 if (CheckHitKey(KEY_INPUT_SPACE) == 1 && ShotFlag == 0) { int Yuw, Yuh, Sw, Sh; // 自機と弾の画像のサイズを得る GetGraphSize(YusyaGraph, &Yuw, &Yuh); GetGraphSize(ShotGraph, &Sw, &Sh); // 弾の位置をセット、位置は勇者の中心にする ShotX = (Yuw - Sw) / 2 + YusyaX; ShotY = (Yuh - Sh) / 2 + YusyaY; // 弾1は現時点を持って存在するので、存在状態を保持する変数に1を代入する Shot1Flag = 1; } 以下省略 上記のプログラムの「// 弾の位置をセット、位置は勇者の中心にする」の処理の意味が分かりません。 「// 自機と弾の画像のサイズを得る」と何か関係があるのは分かるのですが、どうしてこのような計算で自機の中心に弾が表示されるのかが分かりません。 どうか解説してください。よろしくお願いします。
メンテ

Page: 1 |

Re: シューティングゲームの弾の座標 ( No.1 )
名前:はるかぜ 日時:2015/10/19 20:29

GetGraphSize(YusyaGraph, &Yuw, &Yuh); この処理を行うと自機画像の幅がYuwに、高さがYuhに格納されます。 GetGraphSize(ShotGraph, &Sw, &Sh); これは同様に弾画像のサイズがSwとShに格納されます。 (Yuw - Sw) / 2 (Yuh - Sh) / 2 この計算では弾画像を、自機画像上のどの座標に表示すれば中心に表示されているように見えるかを求めることができます。 この計算の後ろについている + YusyaX; + YusyaY; で、現在の画面上の自機の位置を足すことで、弾画像の位置は、自機の座標+自機画像上での弾の座標になり、中心に表示されます。 仮に自機画像が100×100、弾画像が20×20の大きさで、自機が画面上の300,400の位置に居たとすると、 弾のX座標は (100 - 20) / 2 + 300 = 340 Y座標は (100 - 20) / 2 + 400 = 440 となり、これが弾が表示される位置になります。 自機の位置よりもX座標、Y座標ともに+40の位置に弾を表示するということです。
メンテ
Re: シューティングゲームの弾の座標 ( No.2 )
名前:おっきいパンチャン 日時:2015/10/24 17:04

解決しました。 ありがとうございました。
メンテ
Re: シューティングゲームの弾の座標 ( No.3 )
名前:おっきいパンチャン(解決) 日時:2015/10/24 17:05

解決しました。 ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存