アクションゲーム講座...
TRANSCRIPT
アクションゲーム講座第一回
この講座は
•マリオのような簡単な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日です
後日今回のソースコード詳細解説を載せます