예제 #1
0
        // This prevents boss from getting stuck in door ways at the edge of the room.
        private IEnumerator PathBackToCenter(AIActor target, Vector2 returnPosition)
        {
            if (!target)
            {
                target.BehaviorVelocity          = Vector2.zero;
                target.BehaviorOverridesVelocity = true;
                m_IsPathfindingToCenter          = false;
                yield break;
            }
            float elapsed = 0f;

            target.BehaviorOverridesVelocity = false;
            target.ClearPath();
            target.PathfindToPosition(returnPosition, canPassOccupied: true);
            yield return(null);

            while (!target.PathComplete)
            {
                elapsed += BraveTime.DeltaTime;
                if (elapsed > 20)
                {
                    target.BehaviorOverridesVelocity = true;
                    target.ClearPath();
                    m_IsPathfindingToCenter = false;
                    yield break;
                }
                yield return(null);
            }
            target.BehaviorOverridesVelocity = true;
            m_IsPathfindingToCenter          = false;
            yield break;
        }