/// ④更新
    public void Update()
    {
        if (_number <= 0)
        {
            // ⑧すべての敵が出現したので何もしない
            return;
        }

        // ⑤経過時間を足し込む
        _tInterval += Time.deltaTime;
        // ⑥経過時間をチェック
        if (_tInterval >= _interval)
        {
            // インターバルを超えたので敵出現
            _tInterval -= _interval;
            // 敵を生成
            int ranene = Random.Range(0, 2);
            if (ranene == 0)
            {
                Enemy.Add(_pathList);
            }
            if (ranene == 1)
            {
                Enemy2.Add(_pathList);
            }
            // ⑦敵生成カウンタを減らす
            _number--;
        }
    }
Beispiel #2
0
    void Initilize_Enemy()
    {
        // 管理オブジェクトを生成
        Enemy.parent = new TokenMgr <Enemy>("Enemy", ENEMY_NUM);
        Random.InitState(10);


        e_list = new List <Enemy>(ENEMY_NUM / 4);
        for (int i = 0; i < ENEMY_NUM / 4; i++)
        {
            int   ind = Random.Range(0, stageList.Count);
            Stage tmp = stageList[ind];
            if (stageList.Remove(stageList[ind]))
            {
                stageList.Insert(0, tmp);
            }
            ind = Random.Range(1, stageList.Count);
            Enemy e = Enemy.Add(e_list.Count, stageList[ind].obj.transform.position.x, 1.0f, stageList[ind].obj.transform.position.z, this);
            e.InitMgrTarget(enemy_move_speed / 2, new Vector3(stageList[0].obj.transform.position.x, stageList[0].obj.transform.position.y + 1, stageList[0].obj.transform.position.z));

            //Debug.Log(stageList[0].obj.transform.position);

            e.Initilize_Shot();

            e_list.Add(e);
        }
    }
Beispiel #3
0
        public void AddEnemy(BattleSceneTypeEnemy enemy, bool processResources)
        {
            for (int i = 0; i < enemy.Count; i++)
            {
                StageEnemy curEnemy = new StageEnemy();
                curEnemy.StageNumber = StageNumber;
                curEnemy.CycleNumber = CycleNumber;
                curEnemy.EnemyType   = enemy;
                double intensityMult   = 1;
                double cycleMultiplier = 1;
                if (CycleNumber > 1)
                {
                    intensityMult   = Math.Pow((1 + (double)enemy.CycleIntensityMult / 100), CycleNumber - 1);
                    cycleMultiplier = Math.Pow((1 + (double)enemy.CycleMultiplier / 100), CycleNumber - 1);
                }

                curEnemy.BattleIntensity      = (int)Math.Round(enemy.Rig.sModel.BattleIntensity * intensityMult);
                curEnemy.EnemyStatsMultiplier = cycleMultiplier;
                curEnemy.CalculateParameters();
                if (processResources)
                {
                    foreach (var c in Cr)
                    {
                        c.ProcessEnemy(curEnemy);
                    }
                }
                Enemy.Add(curEnemy);
            }
        }
Beispiel #4
0
    public void Add_Enemy(Vector3 pos)
    {
        Enemy e           = Enemy.Add(e_list.Count, pos.x, 0.75f, pos.z, this);
        Stage targetStage = pm.Sort_Prob(stageList);

        e.InitMgrTarget(enemy_move_speed / 2, new Vector3(targetStage.obj.transform.position.x, targetStage.obj.transform.position.y + 1, targetStage.obj.transform.position.z));

        e_list.Add(e);
    }
Beispiel #5
0
 public DungeonMatchup(List <string> EnemyNames)
 {
     EnemyNames.ForEach(s =>
     {
         var enemy = GetEnemy(s);
         if (EnemyNames.Count(e => e.Equals(s)) > 1)
         {
             enemy.Name = $"{enemy.Name} {Enemy.Count(e => e.Name.Contains(enemy.Name)) + 1}";
         }
         Enemy.Add(enemy);
     });
     this.EnemyNames = EnemyNames;
 }
Beispiel #6
0
    void Start()
    {
        Enemy enemy1 = new Enemy();
        Enemy enemy2 = new Enemy();
        Enemy enemy3 = new Enemy();

        int x    = Enemy.enemyCount;
        int soma = Enemy.Add(5, 6);

        print("Total de inimigos: " + x + " Soma total: " + soma);

        //Porcausa do static como extensão de método, o this transform como parâmetro, pode ser chamado em qualquer classe
        transform.ResetTransformation();
    }
Beispiel #7
0
        // 获取怪物所有信息
        protected Enemy GetEnemy(string enemyName)
        {
            Enemy enemy = new Enemy();

            string enemyInfo = "";

            foreach (string e in GameConfig.enemy)
            {
                enemyInfo += iniTool.IniReadValue(devPath, enemyIni, enemyName, e) + ",";
            }

            enemy.Name = enemyName;

            enemy.Add(enemyInfo);

            return(enemy);
        }
Beispiel #8
0
    public void Update()
    {
        if (_number <= 0)
        {
            // すべての敵が出現したので何もしない
            return;
        }

        // 経過時間を足し込む
        _tInterval += Time.deltaTime;
        if (_tInterval >= _interval)
        {
            // インターバルを超えたので敵出現
            _tInterval -= _interval;
            // 敵を生成
            Enemy.Add(_pathList);
            // 敵生成カウンタを減らす
            _number--;
        }
    }
Beispiel #9
0
 public void Yell(int CurrentState)
 {
     Collider[] hitCollider = Physics.OverlapSphere(transform.position, yellRadius);
     for (int i = 0, l = hitCollider.Length; i < l; ++i)
     {
         if (hitCollider[i].CompareTag("Enemy"))
         {
             if (hitCollider[i] != Mycollider)
             {
                 Debug.Log("Le collider " + i + " est : " + hitCollider[i].name + " et sont BeenYelled est à " + hitCollider[i].gameObject.GetComponent <EnemyController>().BeenYelled);
                 Enemy.Add(hitCollider[i]);
                 if (!hitCollider[i].gameObject.GetComponent <EnemyController>().BeenYelled)
                 {
                     hitCollider[i].gameObject.GetComponent <EnemyController>().ChangeState(CurrentState);
                 }
             }
         }
     }
     BeenYelled = true;
 }
Beispiel #10
0
 public void AddEnemy(Unit unit)
 {
     Enemy.Add(unit);
     AllUnits.Add(unit);
 }
Beispiel #11
0
 /// 敵の生成
 Enemy AddEnemy(int id, float direction, float speed)
 {
     return(Enemy.Add(id, X, Y, direction, speed));
 }
Beispiel #12
0
    // Update is called once per frame
    void Update()
    {
        if (moveCameraFlag == true)
        {
            mainCamera.transform.position = Vector3.MoveTowards(mainCamera.transform.position, player.transform.position + cameraFollow.offset, Time.deltaTime * 25);
            if ((mainCamera.transform.position - (player.transform.position + cameraFollow.offset)).sqrMagnitude < 10f)
            {
                player.SetStartFlag(true);
                cameraFollow.enabled = true;
                moveCameraFlag       = false;
                if (enemyList != null)
                {
                    foreach (Enemy e in enemyList)
                    {
                        e.SetStartFlag(true);
                    }
                }
            }
        }

        if (player.GetHp() <= 0)
        {
            SceneManager.LoadScene("GameOver");
        }

        if (hostageFlag == true && (player.transform.position - startPos).sqrMagnitude < 2f && (player.transform.position - hostage.transform.position).sqrMagnitude < 5f)
        {
            SceneManager.LoadScene("GameClear");
        }


        if (SceneManager.GetActiveScene().name != "Select")
        {
            UpdateAlertUIStates();

            // プレイヤーに人質が近づいたら人質を連れる
            if ((player.transform.position - endPos).sqrMagnitude < 3f)
            {
                // 警告ステートの場合は人質を救出できない
                int cnt = 0;
                foreach (Enemy e in enemyList)
                {
                    //if (e.GetAttack()) cnt++;
                    if (e.GetStates() == StateType.Danger)
                    {
                        cnt++;
                    }
                }
                if (cnt == 0)
                {
                    hostageFlag = true;
                    dp.SetPurposeText("スタート地点に戻ろう");

                    // 敵が
                    if (Enemy.parent.Count() < (ENEMY_NUM / 2))
                    {
                        for (int i = 0; i < ENEMY_NUM / 4; i++)
                        {
                            int enemyNum = Random.Range(1, 3);
                            int ind      = 0;
                            for (int j = 0; j < stageList.Count; j++)
                            {
                                //
                                if (stageList[j].id == enemyNum)
                                {
                                    ind = j;
                                    break;
                                }
                            }
                            //Debug.Log("enemy : " + ind);
                            //Debug.Log(ind + " stageID : " + stageList[ind].id);
                            Enemy e       = Enemy.Add(enemyList.Count, stageList[ind].obj.transform.position.x, 1.0f, stageList[ind].obj.transform.position.z, stageList[ind].id, this, pm);
                            var   itemObj = Instantiate(itemBox, Vector3.zero, itemBox.transform.rotation);
                            pi = itemObj.GetComponent <PopItem>();
                            pi.Init(this, e);

                            e.InitMgrTarget(enemyMoveSpeed / 2, player, false, dp, pi);

                            //Debug.Log(stageList[0].obj.transform.position);

                            e.InitilizeShot();

                            e.InitilizeUI();

                            e.SetStartFlag(true);

                            enemyList.Add(e);
                        }
                    }
                }
            }

            // プレイヤーの周りにいない敵は描画しない
            foreach (Enemy e in enemyList)
            {
                if ((player.transform.position - e.transform.position).sqrMagnitude < 300f)
                {
                    e.gameObject.SetActive(true);
                }
                else
                {
                    e.gameObject.SetActive(false);
                }
            }
        }
    }
Beispiel #13
0
    void InitilizeEnemy()
    {
        // 管理オブジェクトを生成
        Enemy.parent = new TokenMgr <Enemy>("Enemy", ENEMY_NUM);
        Random.InitState(10);

        int keyFlag = 0;


        /*===================================================*/
        // 敵を生成
        enemyList = new List <Enemy>(ENEMY_NUM);
        for (int i = 0; i < ENEMY_NUM; i++)
        {
            int enemyNum = i % (ROOM_NUM)+1;
            if (i % (ROOM_NUM)+1 == 1 || i % (ROOM_NUM)+1 == ROOM_NUM + 1)
            {
                enemyNum = Random.Range(3, ROOM_NUM + 1);
            }
            int ind = 0;
            for (int j = 0; j < stageList.Count; j++)
            {
                //
                if (stageList[j].id == enemyNum)
                {
                    ind = j;
                    if (stageList[j].id == ROOM_NUM && keyFlag == 0)
                    {
                        keyFlag++;
                    }
                    break;
                }
            }
            // アイテムボックスを生成
            if (i % 2 == 0)
            {
                Vector3 itemPos = new Vector3(stageList[ind].obj.transform.position.x, 0.0f, stageList[ind].obj.transform.position.z);
                var     obj     = Instantiate(itemBox, itemPos, itemBox.transform.rotation);
                pi = obj.GetComponent <PopItem>();
                pi.Init(this, null);
            }

            // 敵を生成
            Enemy e       = Enemy.Add(enemyList.Count, stageList[ind].obj.transform.position.x, 1.0f, stageList[ind].obj.transform.position.z, stageList[ind].id, this, pm);
            var   itemObj = Instantiate(itemBox, Vector3.zero, itemBox.transform.rotation);
            //itemObj.GetComponent<Renderer>().material.color = new Color(0, 0, 0, 0);

            pi = itemObj.GetComponent <PopItem>();
            pi.Init(this, e);

            // ショットアイテムとデコイアイテムを生成

            /*
             * if (Random.Range(0,2) == 0)
             * {
             *  var obj = Instantiate(shotItem, new Vector3(stageList[ind].obj.transform.position.x, 0.0f, stageList[ind].obj.transform.position.z), shotItem.transform.rotation);
             * }
             * else
             * {
             *  var obj = Instantiate(decoyItem, new Vector3(stageList[ind].obj.transform.position.x, 0.0f, stageList[ind].obj.transform.position.z), decoyItem.transform.rotation);
             * }
             */

            // 敵に鍵持ちのステータスを設定する
            if (keyFlag == 1)
            {
                e.InitMgrTarget(enemyMoveSpeed / 2, player, true, dp, pi);
                keyFlag++;
            }
            else
            {
                e.InitMgrTarget(enemyMoveSpeed / 2, player, false, dp, pi);
            }

            //Debug.Log(stageList[0].obj.transform.position);

            e.InitilizeShot();

            e.InitilizeUI();

            enemyList.Add(e);

            //InitilizeEffect(e.transform.position, enemyEffect);
            StartCoroutine(InitilizeEffect(e.transform.position, enemyEffect));
        }
        /*===================================================*/
    }