【Unity2D】ハンマーの取得をして攻撃機能を有効にする

Unity2D

Unity2D ARPG

メッセージ表示と選択肢ができたのでシステム作りの山場を越えたような感じがします。

今回は現時点ではすでにハンマーをもってしまっていますが、その機能をOFFにしておいて
ハンマーを取得してからハンマーを使えるようにしてみましょう。

まずはプレイヤーのステータスに武器の有無判定を持たせます。

    // プレイヤー所持アイテムフラグ
    private public int[] _playerStatus = {
        0, // 0. 現在レベル
        0, // 1. 現在HP
        0, // 2. 最大HP
        0, // 3, 現在魔力
        0, // 4, 最大魔力
        0, // 5, 武器のレベル(0だと未所持)
        0  // 6, 服のレベル
    }
    public int[] getPlayerStatusList
    {
        get { return _playerStatus; }
    }
    public int getPlayerStatus(int item)
    {
        return _playerStatus[item];
    }
    public void setPlayerStatus(int val, int item)
    {
        _playerStatus[item] = val;
    }

能力系のステータスはプレイヤーしか使わないので「State_Player」に記載してOKです。

モンスターはモンスター用ステータスで持たせます。

_playerStatusの配列添え字5の要素を0にしてたら武器を持ってない状態にします。

そしてハンマーイベントでこの数値を1にしてみましょう。

アイテム入手などもイベントのリストに加えます。

今は6までいってるので、7をプレイヤーステータスの値を変更するイベントとしましょう。

case 7:
    // プレイヤーステータス変更
    _State.setPlayerStatus(ev[1], ev[2]);
    break;

こうなりますね。

イベントリスト0がステータス変更イベントで1が変更後の数値で2が変更箇所にしました。

これでハンマーを入手できるようになりましたので、
Zキーを押したときはこの数値が1の時だけ動かせるように制御してみましょう。

とおもったのですがState_ManagerにsetStateを書いていたので、
State_Playerに記述したステータスが読み込めないですね。

使ってるのもState_Playerだけですし、一旦setState関数だけを移し替えます。

行き当たりばったりでやってると本当に設計の大切さって身に沁みますね……

移し替えたら武器入手フラグがONになってるときだけ武器を触れるようにしてみます。

        // 攻撃状態にする
        if (keyList.Contains(KeyCode.Z))
        {
            if (_playerStatus[5] >= 1)
            {
                _actState = 2;
            }
        }

これでハンマー入手後に武器を触れるようになりました。

しかし現時点では「ハンマーをとらない」の選択肢を選んでも取ったことになっています。

この辺の制御は後からでも大丈夫です。

次回はハンマーの当たり判定に当たったら壊れる岩を作りましょう。

それでは。