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(); } } } }
public State_Patrol(BasicEnemyCharacter ch) { this.enemy = ch; }
public State_Attack(BasicEnemyCharacter ch) { this.enemy = ch; }
public State_Return(BasicEnemyCharacter ch) { this.enemy = ch; }
public State_Chase(BasicEnemyCharacter ch) { this.enemy = ch; }
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); }