目次
前回のチュートリアル
はじめに
前回は、だんだん敵の出現頻度を上げるコードを作成しました
今回は、プレイヤーのレベルが上ったらパワーアップするようにしていきます
プレイヤーを制御するスクリプトの修正
今回作成する全方位シューティングでは、
プレイヤーのレベルが上ったら、下記のパラメータが成長するようにしていきます
- 弾の発射数
- 弾の発射間隔
- 宝石を引きつける距離
そのために、まずはプレイヤーを制御するスクリプトを修正していきます
「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 になり、弾の発射間隔も短くなり、
遠くにある宝石もプレイヤーに引き寄せられるようになります
おまけ:プレイヤーのパラメータの調整
今回、プレイヤーに追加したこれらのパラメータを調整することで、
プレイヤーのレベルが上った時に、どのように強くなるか変更できるので、
興味があればいろいろパラメータを設定してみて頂ければと思います
次回は、作成したゲームをビルドしていきます