Пример #1
0
    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);
    }
Пример #2
0
    // 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);
    }
Пример #3
0
	// Use this for initialization
	void Start () {
		thisEnemy = GetComponent<Enemy> ();
        l_Attack = this.GetComponent<LongRangeAttack>();
	}