[HMC]年間5250円で独自ドメイン付属、ウィルスチェックありのレンタルサーバ!
Last update : 1999/12/13
ゲーム制作基礎 第5回
キー入力によってキャラクタを8方向へ動かす
サンプルコードのダウンロード
  では、まずサンプルコードをダウンロードし、解凍して下さい。 私はVisual C++6.0でコンパイルしているので、をお持ちの方は Visual C++でプロジェクトファイルを開いて下さい(「game_05.dsw」をダブルクリックすれば開けます)。 圧縮ファイルに含まれる「game_05.exe」をダブルクリックし、実行してみて下さい。どうでしょう?画面が切り替わり、フルスクリーン化すると思います。 そして、カーソルキーでキャラクタが8方向へ移動すると思います。
  というわけで、今回は4つのキー入力で8方向へキャラクタを移動させる方法を説明したいと思います。
やってはいけないのかも
ゲーム制作基礎 第2回」では 4つのキー入力でキャラクタを4方向に動作させましたが、8方向というと、 よくこんな感じでやってしまいます(第2回のキー入力部分のelseを外しただけ)。
たしかに、これでも8方向の移動は可能ですが、例えば右上に移動する場合はどうでしょう? mvが3として、右に3、上に3移動しますよね?直線距離で考えると4.24264068・・・というように3よりも移動距離が大きい事になります。 ですから、このプログラムでは斜めに移動する場合、移動量がおかしいという事になります。
キャラクターの8方向移動
  というわけで、8方向、同じ距離で進ませるには、三角関数を使用すると、比較的簡単に出来ます(^^; 三角関数については前回みっちりやったので大丈夫だと思います(爆
まず1つ角度を表す変数を用意しておき(angle)、それをまず-1に設定しておきます。そして キー判定によって、そのキーが示す角度へangleを変更します。 もしangleが最初に設定した-1とは違う値だったら、キーが押されていた事になり、そのangleが示す方向へ 移動させてやれば良いというわけです。 まぁ、そんなに難しい事はやってないので解ると思います(^^; ただ、気を付けないといけないのが、キー判定の順番です。 斜め移動のキー判定を先にやってからでないと、いけません。実際にいろいろいじってみれば何故かが解ると思います(爆