public void FixedUpdate() { // Clean up completed behaviors for (int i = mBehaviors.Count - 1; i >= 0; --i) { Behavior behavior = mBehaviors[i]; if (behavior.IsDone()) { behavior.Stop(); mBehaviors.RemoveAt(i); } } // Update up movement if necessary if (mMovementBehavior != null) { if (mPendingMovementBehavior != null || mMovementBehavior.IsDone()) { mMovementBehavior.Stop(); mMovementBehavior = null; } } if (mMovementBehavior == null) { mMovementBehavior = mPendingMovementBehavior ?? GetNextBasicBehavior(); if (mMovementBehavior != null) { mMovementBehavior.Start(); } mPendingMovementBehavior = null; } // Start pending behaviors foreach (Behavior behavior in mPendingBehaviors) { behavior.Start(); mBehaviors.Add(behavior); } mPendingBehaviors.Clear(); // Update all behaviors if (mMovementBehavior != null) { mMovementBehavior.FixedUpdate(); } foreach (Behavior behavior in mBehaviors) { behavior.FixedUpdate(); } }
private IEnumerator SpawnCoroutine() { yield return(spawning); var enemy = ObjectPool.GetObject(gameObjectName, "Entities"); enemy.transform.position = point; Behavior behavior = enemy.GetComponent <Behavior>(); if (behavior != null) { behavior.SetVariableValue("TrackTarget", Target); behavior.EnableBehavior(); behavior.Start(); } ObjectPool.RecycleObject(this.gameObject); }