アクションゲーム講座 第一回 この講座は • マリオのような簡単な2Dアクションゲームを 製作します。 この講座は • 今までの講座と違い、 ソースコードを配布してその中身の解説を行う • 自分で読み込んで、自由に改変してみよう! • ソースコードをもらっていない人はここで挙手! 本日のメニュー •2Dマップについて •ジャンプについて •当たり判定(衝突修正)について その前に! •C言語講座の内容は覚えていますか? •関数自作、プロトタイプ宣言、配列etc… •ソースコードや過去の講座資料を見ながら よく復習しましょう。 2Dマップについて まあ、まずは動かしてみて • 配布したZIPを解凍→action_kouza1.slnを開く • そのままCtrl+F5でコンパイルして実行! • 左右キーとZキーで操作、ジョニー君が動く! • DXライブラリの初期設定は要らないヨ map.cppに注目! • プロジェクトの中のmap.cppを開いてみよう! • 気持ち悪い二次配列が拝めます マップはゲームの基本のキ • 配列の0と1がゲームのマップに対応しています! • ここを変えると自分の好きなマップができる! • RPGでも使うのでよく覚えておこう! 対応 マップチップのサイズ • 今回のマップは1マスが32x32ピクセルのサイズでできています。 • この1マスをマップチップなんて言ったりします。 • ジョニー君はこのマップチップと当たり判定をしています。 マップまとめ 配列を使って マップを作る! アクション以外にも使えます ジャンプについて ちょっと復習 • DXライブラリのウインドウの原点は左上です! • DXライブラリはY軸の正負の方向が反転しています! ジョニー君のジャンプの流れ ①Zボタンが押されるとY軸の上方向(負の方向)に移動量が増加 JUMPFLAGが1になり、飛んでる間はジャンプできないようにする。 ジョニー君のジャンプの流れ ②飛んでいる間は重力が加えられ、上方向への移動量が減っていく ジョニー君のジャンプの流れ ③そのうち移動方向が上から下になる ジョニー君のジャンプの流れ ④地面に着地すると移動量が0になり、重力も加えられなくなる。 JUMPFLAGが0になり、またジャンプできるようになる。 ジョニー君のジャンプの流れ ジョニー君の頭がマップチップにぶつかると、その時点で移動量が 0になる。 (でもJUMPFLAGは1なので、重力は加え続けられるよ!) ジャンプまとめ ジャンプをするときは 重力を使う! アクションゲームに重力は不可欠です! 当たり判定(衝突修正)に ついて ジョニー君の動きは少し複雑 • ジョニー君はこれまでの丸や四角のようにただ動いているわけでは ありません。 • 相当ビビりながら動いてます。 ジョニー君の動き ①ジョニー君はまず上下方向から動きます。 Y軸方向の移動量に従って仮移動します。 ジョニー君の動き ②仮移動したところで、ジョニー君の四角の四隅がマップチップに 当たっていないかを調べます。 ジョニー君の動き ③当たっていれば、然るべき場所に移ります。 当たっていなければそのままです。 ジョニー君の動き ④次にそこから左右方向に仮移動します。 ジョニー君の動き ④仮移動したところで、再びジョニー君の四角の四隅がマップチップに 当たっていないかを調べます。 ジョニー君の動き ⑤当たっていれば、然るべき場所に移ります。 当たっていなければそのままです。 なんで四隅で判定するの? • 片方だけ接触している場合があるから • 比べるものより自分が大きい場合、すり抜けることもあるので、 その時は、方法を変える必要がある。 条件式の+1とか-1とかって何? • 判定基準が四角の内側になるので、そのための補正。 • 左上ならX方向に+1、Y方向に+1、右上ならX方向に-1、Y方向に+1 左下ならX方向に+1、Y方向に-1、左下ならX方向に-1、Y方向に-1 の座標で当たり判定を行う Q.もしも+1と-1を取っ払ってしまうと・・・? Q.何で判定基準が内側になるのか、考えてみよう 当たり判定まとめ 当たり判定は 四隅で! 条件式に要注意! ただし注意 • この方法はマップチップもプレーヤーも四角の時のみ有効 →キャラの形が変わったり地形が複雑になると 条件がまるっきり変わってしまうので気を付けよう! 次回予告 マップ移動について 次回は9月6日です 後日今回のソースコード詳細解説を載せます
© Copyright 2024 ExpyDoc