public override void FsmInit() { fsmManager = new FsmManager((int)LongRangeEnum.Max); PlayerIdle playerIdle = new PlayerIdle(anim, this); PlayerRun playerRun = new PlayerRun(anim, this); LongRangeAttack longRangeAttack = new LongRangeAttack(anim, this); fsmManager.AddState(playerIdle); fsmManager.AddState(playerRun); fsmManager.AddState(longRangeAttack); fsmManager.ChangeState((int)LongRangeEnum.Idle); }
// This will spawn an object from a pool stored in poolDictionary public GameObject SpawnFromPool(string tag, Vector3 position, Quaternion rotation, Transform player, Transform enemy, float range) { if (!poolDictionary.ContainsKey(tag)) { Debug.LogWarning("Pool with tag " + tag + " doesn't exist."); return(null); } GameObject objectToSpawn = poolDictionary[tag].Dequeue(); objectToSpawn.SetActive(true); objectToSpawn.transform.position = position; objectToSpawn.transform.rotation = rotation; // Search for SmallAttack in the objectToSpawn and if it exists then the variables player, enemy and range are passed to smallAttack LongRangeAttack smallAttack = objectToSpawn.GetComponent <LongRangeAttack>(); if (smallAttack != null) { smallAttack.SetPlayer(player); smallAttack.SetRange(range); Physics.IgnoreCollision(objectToSpawn.GetComponent <Collider>(), enemy.GetComponent <Collider>()); } IPooledObject pooledObject = objectToSpawn.GetComponent <IPooledObject>(); // Whenever an object is spawned it can use the method OnObjectSpawn if (pooledObject != null) { pooledObject.OnObjectSpawn(); } poolDictionary[tag].Enqueue(objectToSpawn); return(objectToSpawn); }
// Use this for initialization void Start () { thisEnemy = GetComponent<Enemy> (); l_Attack = this.GetComponent<LongRangeAttack>(); }