初心者が征く!オリジナルゲーム作成道 day7

こんにちは!インターン生の内村です!

今回は衝突判定とゲームオーバー画面の表示を作っていきたいと思います!

今回も同様にこちらのサイトを参考にしています。
https://creive.me/archives/9788/ けいしゃけ 様

まずは衝突判定です。
現在のゲームには、前回までに作成した操作キャラクターと敵キャラクターが画面上に存在するため、この2つが接触した際の判定を作っていきます。

以下の手順で行います。
①操作キャラクターのスプライトに操作判定を付与する
②敵キャラクターのスプライトにも操作判定を付与して、2つが重なった場合の処理を書く。
以下のように書きます。(var game内のupdate:functin()に追加します。)

【解説】
まず、スプライトの大きさと同等の矩形(すべての角が直角の四角形(正方形、長方形)の図形)を返すgetBoundingBox()で操作キャラクターを読み込みます。
同様に敵キャラクターも読み込みます。(敵キャラクターは配列で何体も生成されるため繰り返し文Forを用いて判定を付けます)
rectIntersectsRect()で2つの矩形が重なった場合の処理を書きます。(現在はthis.gameOverが入っていますが後で解説します。)
これで操作キャラクターと敵キャラクターの衝突判定が完成しました!

次にゲームオーバー画面の表示です。
操作キャラクターが敵キャラクターと重なった瞬間にゲームオーバー画面が表示されて一切の操作が不能になり、リスタートが選べるといった画面・処理を作ります。

以下の手順で行います。
①var game 内にgameOver:function()を作成する。
②getWinSizeで画面のサイズを取得する
③表示したい文字や文字のフォント、大きさ、色などを指定する
④restartボタンをゲームオーバーの文字の下に表示するように設定する
⑤restartとstopAllenemiesを作成する

以下のように書きます。

①と②は今までやってきた処理と同じなため割愛します。

③表示したい文字や文字のフォント、大きさ、色などを指定する

【解説】
cc.LabelTTF.create()で文字を表示させフォントなどを整えます。
取得した画面サイズをもとに位置を調整します。
addChildの2つ目の引数は2にします。(今後のゲーム作成で1を使うため。この引数が意味しているのはゲームのz軸の奥行で背景などは0にある。)

④restartボタンをゲームオーバーの文字の下に表示するように設定する

【解説】
cc.MenuItemFont()でリスタートボタンを設定します。(restartと結びつけておくことを忘れずに)
ゲームオーバーと同様に位置など調整します。

⑤restartとstopAllenemiesを作成する

restart
【解説】
_enemiesの中を空にしてゲーム(gameScene)をrunSceneで読み込みなおしています。

stopAllenemies
【解説】
特に難しい処理ではなく、読み込まれている敵キャラクター_enemiesのアクションをすべて停止させる処理です。
これによって画面が止まったようにプレイヤーに感じさせます。

今回は以上です!
次回は弾の発射と弾と敵の衝突判定を作りたいと思います!

興味を持たれた方はお気軽にお問い合わせください。

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー