コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity 入門】全方位シューティングを作る 第24回 だんだん敵の出現頻度を上げる

目次

前回のチュートリアル

はじめに

前回は、ゲームオーバーの表示を作成しました
今回は、だんだん敵の出現頻度を上げるコードを作成していきます

敵の出現を管理するスクリプトの修正

現在は、ゲームを開始してから常に敵の出現頻度が一定で、
ゲームの難しさに変化がないため、最初は敵が少しだけ出現し、
だんだん敵が多く出現していくようにしていきます

「EnemyManager」をコードエディタで開き、下記のコードを削除します

public float m_interval; // 出現間隔(秒)

次に、変数の定義に下記のコードを追加します

public float m_intervalFrom; // 出現間隔(秒)(ゲームの経過時間が 0 の時)
public float m_intervalTo; // 出現間隔(秒)(ゲームの経過時間が m_elapsedTimeMax の時)
public float m_elapsedTimeMax; // 経過時間の最大値
public float m_elapsedTime; // 経過時間

そして、Update 関数の先頭の

// 出現タイミングを管理するタイマーを更新する
m_timer += Time.deltaTime;

// まだ敵が出現するタイミングではない場合、
// このフレームの処理はここで終える
if ( m_timer < m_interval ) return;

上記のコードを下記のように変更します

// 経過時間を更新する
m_elapsedTime += Time.deltaTime;

// 出現タイミングを管理するタイマーを更新する
m_timer += Time.deltaTime;

// ゲームの経過時間から出現間隔(秒)を算出する
// ゲームの経過時間が長くなるほど、敵の出現間隔が短くなる
var t = m_elapsedTime / m_elapsedTimeMax;
var interval = Mathf.Lerp( m_intervalFrom, m_intervalTo, t );

// まだ敵が出現するタイミングではない場合、
// このフレームの処理はここで終える
if ( m_timer < interval ) return;

敵の出現間隔を調整

スクリプトの修正が完了したので、Unity で出現間隔を調整していきます

f:id:baba_s:20180401100603p:plain

「EnemyManager」オブジェクトを選択し、パラメータを設定します

項目 内容 補足
Interval From 1 出現間隔(秒)
(ゲームの経過時間が 0 の時)
Interval To 0.25 出現間隔(秒)
(ゲームの経過時間が m_elapsedTimeMax の時)
Elapsed Time Max 60 経過時間の最大値

これで、ゲーム開始時は敵が 1 秒毎に出現し、
ゲームが 60 秒経過すると、敵が 0.25 秒毎に出現するようになります

f:id:baba_s:20180401100854g:plain

Unity を再生すると、ゲーム開始時は、あまり敵が敵が出現しないですが、

f:id:baba_s:20180401100955g:plain

時間が経過するほど、たくさんの敵が出現するようになったことが確認できます

次回は、プレイヤーのレベルが上ったらパワーアップするようにしていきます

次のチュートリアル

チュートリアル一覧