Example #1
0
    private void Start()
    {
        animator = GetComponent <Animator>();
        // 元データから設定
        hp         = characterStatus.GetHp();
        mp         = characterStatus.GetMp();
        isNumbness = characterStatus.IsNumbnessState();
        isPoison   = characterStatus.IsPoisonState();

        // 状態の設定
        battleState = BattleState.Idle;
        //ガードの状態
        guardPercentage = 1;
        // コンポーネントの取得
        battleManager      = GameObject.Find("BattleManager").GetComponent <BattleManager>();
        partyStatus        = battleManager.partyStatus;
        battleStatusScript = GameObject.Find("BattleUICanvas/PlayerUI/StatusPanel").GetComponent <BattleStatusScript>();
        // 既に死んでいる場合は倒れている状態にする
        if (characterStatus.GetHp() <= 0)
        {
            animator.CrossFade("Dead", 0f, 0, 1f);
            isDead = true;
        }
    }
    // Start is called before the first frame update
    void Start()
    {
        magicOrItemPanelContent = magicOrItemPanel;
        int size = enemyPartyStatusList.GetPartyMembersList().Count;

        enemyPartyStatus = enemyPartyStatusList.GetPartyMembersList()[(int)(Random.value * 100) % size];
        // 同じ名前の敵がいた場合の処理に使うリスト
        List <string> enemyNameList = new List <string>();

        Transform         characterTransform;
        List <GameObject> instances = new List <GameObject>();
        GameObject        ins;
        string            characterName;

        int positionNum = 0;

        // 味方パーティーのプレハブをインスタンス化
        foreach (AllyStatus allyChara in partyStatus.GetAllyStatus())
        {
            characterTransform = battleBasePosition.Find("AllyPos" + positionNum).transform;
            ins = Instantiate <GameObject>(allyChara.GetBattleObject(), characterTransform.position, characterTransform.rotation);
            ins.AddComponent <CharacterBattleScript>();
            ins.GetComponent <CharacterBattleScript>().characterStatus = allyChara;
            ins.name = allyChara.GetCharacterName();
            if (allyChara.GetHp() > 0)
            {
                allyCharacterInBattleList.Add(ins);
                allCharacterList.Add(ins);
            }
            positionNum++;
        }
        if (enemyPartyStatus == null)
        {
            Debug.LogError("敵パーティーデータが設定されていません。");
        }
        // 敵パーティーのプレハブをインスタンス化
        for (int i = 0; i < enemyPartyStatus.GetEnemyGameObjectList().Count; i++)
        {
            characterTransform = battleBasePosition.Find("EnemyPos" + i).transform;
            ins = Instantiate <GameObject>(enemyPartyStatus.GetEnemyGameObjectList()[i], characterTransform.position, characterTransform.rotation);
            // 既に同じ敵が存在したら文字を付加する
            characterName = ins.GetComponent <CharacterBattleScript>().GetCharacterStatus().GetCharacterName();
            if (!enemyNameList.Contains(characterName))
            {
                ins.name = characterName + 'A';
            }
            else
            {
                ins.name = characterName + (char)('A' + enemyNameList.Count(enemyName => enemyName == characterName));
            }
            enemyNameList.Add(characterName);
            enemyCharacterInBattleList.Add(ins);
            allCharacterList.Add(ins);
        }
        // キャラクターリストをキャラクターの素早さの高い順に並べ替え
        allCharacterList = allCharacterList.OrderByDescending(character => character.GetComponent <CharacterBattleScript>().GetCharacterStatus().GetAgility()).ToList <GameObject>();
        // 現在の戦闘
        allCharacterInBattleList = allCharacterList.ToList <GameObject>();
        Debug.Log(allCharacterInBattleList.Count);
        // 確認の為並べ替えたリストを表示
        foreach (var character in allCharacterInBattleList)
        {
            Debug.Log(character.GetComponent <CharacterBattleScript>().GetCharacterStatus().GetCharacterName() + " : " + character.GetComponent <CharacterBattleScript>().GetCharacterStatus().GetAgility());
        }
        // 戦闘前の待ち時間を設定
        waitTime = firstWaitingTime;
        // ランダム値のシードの設定
        Random.InitState((int)Time.time);

        battleResult = battleResultManager.GetComponent <BattleResult>();

        isStartTarn = false;

        isFailGetAway = false;

        // 最初の全データ表示
        battleStatusScript = GameObject.Find("BattleUICanvas/PlayerUI/StatusPanel").GetComponent <BattleStatusScript>();
        battleStatusScript.DisplayStatus();
        // 選択コマンドボタンを設定
        foreach (GameObject allyCharacterInBattle in allyCharacterInBattleList)
        {
            CharacterStatus allyCharacterStatus = allyCharacterInBattle.GetComponent <CharacterBattleScript>().GetCharacterStatus();
            SetSelectCommand(allyCharacterInBattle, allyCharacterStatus.GetSkillList()[0], enemyCharacterInBattleList[0]);
        }

        //ターンの初期化と表示
        turn          = 1;
        turnText.text = "ターン: " + turn.ToString();
    }