コード例 #1
0
 void OnTriggerExit(Collider col)
 {
     if (col.attachedRigidbody && col.attachedRigidbody.gameObject.name.Equals("Player") && col.attachedRigidbody.gameObject.tag.Equals("Character"))
     {
         if (lastMessageFromRoom != name)
         {
             GameObject.Find("SystemMessage").GetComponent <Text>().text = "";
             messageDisplayTicks = -1;
         }
         // If there are any living enemies, have them go back to patrolling
         Transform characters    = transform.Find("Characters");
         int       numCharacters = characters.childCount;
         for (int i = 0; i < numCharacters; i++)
         {
             Transform tf = characters.GetChild(i);
             if (tf == null)
             {
                 continue;
             }
             GameObject obj = tf.gameObject;
             if (obj != null && obj.activeSelf)
             {
                 Transform fn = tf.Find("Functional");
                 if (fn == null)
                 {
                     continue;
                 }
                 BasicEnemyCharacter en = fn.gameObject.GetComponent <BasicEnemyCharacter>();
                 if (en == null)
                 {
                     continue;
                 }
                 en.ForceReturnToPatrol();
             }
         }
     }
 }
コード例 #2
0
 public State_Patrol(BasicEnemyCharacter ch)
 {
     this.enemy = ch;
 }
コード例 #3
0
 public State_Attack(BasicEnemyCharacter ch)
 {
     this.enemy = ch;
 }
コード例 #4
0
 public State_Return(BasicEnemyCharacter ch)
 {
     this.enemy = ch;
 }
コード例 #5
0
 public State_Chase(BasicEnemyCharacter ch)
 {
     this.enemy = ch;
 }
コード例 #6
0
    private void CreateGameObjectCaches()
    {
        //performance optimization: create all possible gameobjecs once instead of creating when needing
        GameObject wallObject = GameObject.CreatePrimitive(PrimitiveType.Cube);

        SetGameObjectColor(wallObject, GlobalVariables.WallColor);
        GameObject coinObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);

        SetGameObjectColor(coinObject, GlobalVariables.CoinColor);
        coinObject.GetComponent <Collider>().isTrigger = true;
        GameObject bonusObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);

        SetGameObjectColor(bonusObject, GlobalVariables.BonusColor);
        bonusObject.GetComponent <Collider>().isTrigger = true;
        GameObject fenceObject = GameObject.CreatePrimitive(PrimitiveType.Cube);

        SetGameObjectColor(fenceObject, GlobalVariables.FenceColor);
        GameObject enemyObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);

        SetGameObjectColor(enemyObject, GlobalVariables.EnemyColor);
        for (int i = 0; i < GlobalVariables.CalMaxObjectsOneLevel(); i++)
        {
            var wall = Instantiate(wallObject);
            wall.transform.localScale = GlobalVariables.WallScale;
            wall.tag = GlobalVariables.TagWall;
            wall.SetActive(false);
            _wallsCache.Add(wall);

            var coin = Instantiate(coinObject);
            coin.transform.localScale = GlobalVariables.CoinScale;
            coin.tag = GlobalVariables.TagCoins;
            coin.SetActive(false);
            _coinsCache.Add(coin);
        }

        for (int i = 0; i < GlobalVariables.CalMaxBonusOneLevel(); i++)
        {
            var bonus = Instantiate(bonusObject);
            bonus.transform.localScale = GlobalVariables.BonusScale;
            bonus.tag = GlobalVariables.TagBonus;
            bonus.SetActive(false);
            _bonusCache.Add(bonus);
        }

        for (int i = 0; i < GlobalVariables.CalMaxFenceCell(); i++)
        {
            var fence = Instantiate(fenceObject);
            fence.transform.localScale = GlobalVariables.FenceScale;
            fence.tag = GlobalVariables.TagFence;
            fence.SetActive(false);
            _fenceCache.Add(fence);
        }

        for (int i = 0; i < GlobalVariables.CalMaxEnemy(); i++)
        {
            //TODO: create various enemies based on the number of level
            var enemyInstansiate = Instantiate(enemyObject);
            enemyInstansiate.tag = GlobalVariables.TagEnemy;
            enemyInstansiate.transform.localScale = GlobalVariables.EnemyScale;
            enemyInstansiate.SetActive(false);
            BasicEnemyCharacter enemyCharacter = (BasicEnemyCharacter)CharacterFactory.Create(enemyInstansiate);
            enemyCharacter.ResetCharacter();
            enemyCharacter.CharacterDead();
            _enemyCache.Add(enemyCharacter);
        }

        Destroy(wallObject);
        Destroy(coinObject);
        Destroy(bonusObject);
        Destroy(fenceObject);
        Destroy(enemyObject);
    }