コガネブログ

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

【Unity 入門】全方位シューティングを作る 第25回 レベルが上がったらパワーアップ

目次

前回のチュートリアル

はじめに

前回は、だんだん敵の出現頻度を上げるコードを作成しました
今回は、プレイヤーのレベルが上ったらパワーアップするようにしていきます

プレイヤーを制御するスクリプトの修正

今回作成する全方位シューティングでは、
プレイヤーのレベルが上ったら、下記のパラメータが成長するようにしていきます

  • 弾の発射数
  • 弾の発射間隔
  • 宝石を引きつける距離

そのために、まずはプレイヤーを制御するスクリプトを修正していきます

「Player」スクリプトをコードエディタで開き、
変数の定義に下記のコードを追加します

public int m_levelMax; // レベルの最大値
public int m_shotCountFrom; // 弾の発射数(レベルが最小値の時)
public int m_shotCountTo; // 弾の発射数(レベルが最大値の時)
public float m_shotIntervalFrom; // 弾の発射間隔(秒)(レベルが最小値の時)
public float m_shotIntervalTo; // 弾の発射間隔(秒)(レベルが最大値の時)
public float m_magnetDistanceFrom; // 宝石を引きつける距離(レベルが最小値の時)
public float m_magnetDistanceTo; // 宝石を引きつける距離(レベルが最大値の時)

次に、Awake 関数の最後に下記のコードを追加します

m_shotCount = m_shotCountFrom; // 弾の発射数
m_shotInterval = m_shotIntervalFrom; // 弾の発射間隔(秒)
m_magnetDistance = m_magnetDistanceFrom; // 宝石を引きつける距離

そして、AddExp 関数の最後に下記のコードを追加します

// レベルアップしたので、各種パラメータを更新する
var t = ( float )( m_level - 1 ) / ( m_levelMax - 1 );
m_shotCount = Mathf.RoundToInt( 
    Mathf.Lerp( m_shotCountFrom, m_shotCountTo, t ) ); // 弾の発射数
m_shotInterval = Mathf.Lerp( 
    m_shotIntervalFrom, m_shotIntervalTo, t ); // 弾の発射間隔(秒)
m_magnetDistance = Mathf.Lerp( 
    m_magnetDistanceFrom, m_magnetDistanceTo, t ); // 宝石を引きつける距離

これで、プレイヤーを制御するスクリプトの修正が完了しました

プレイヤーのパラメータの調整

最後に、プレイヤーのパラメータの変化の仕方を設定していきます

Unity に戻り、「Player」オブジェクトを選択した状態で
パラメータを調整します

項目 内容 補足
Level Max 10 レベルの最大値
Shot Count From 1 弾の発射数(レベルが最小値の時)
Shot Count To 4 弾の発射数(レベルが最大値の時)
Shot Interval From 0.4 弾の発射間隔(秒)(レベルが最小値の時)
Shot Interval To 0.2 弾の発射間隔(秒)(レベルが最大値の時)
Magnet Distance From 1 宝石を引きつける距離(レベルが最小値の時)
Magnet Distance To 2 宝石を引きつける距離(レベルが最大値の時)

これで、レベルが上がると下記のようにプレイヤーが強くなるようになりました

レベル 弾の発射数 弾の発射間隔(秒) 宝石を引きつける距離
1 1 0.4 1
5 2 0.3 1.5
10 4 0.2 2

これで Unity を再生すると、レベルが低い時は、
弾を 1 つしか発射できず、弾の発射間隔も長いですが、

レベルが上がってくると、弾の発射数が 4 になり、弾の発射間隔も短くなり、
遠くにある宝石もプレイヤーに引き寄せられるようになります

おまけ:プレイヤーのパラメータの調整

今回、プレイヤーに追加したこれらのパラメータを調整することで、
プレイヤーのレベルが上った時に、どのように強くなるか変更できるので、
興味があればいろいろパラメータを設定してみて頂ければと思います

次回は、作成したゲームをビルドしていきます

次のチュートリアル

チュートリアル一覧