Exemplo n.º 1
0
    void UpdateEnemy(EnemyQuirk quirk, List <Unit> players)
    {
        Unit enemyUnit = quirk.unit;

        Unit.ManagerState.AiData aiData = enemyUnit.manState.aiData;

        switch (aiData.state)
        {
        case Unit.AiState.Idle:
            Unit closestPlayer = unitMan.GetClosestUnit(enemyUnit, players);
            aiData.closestTarget = closestPlayer;

            if (closestPlayer == null)
            {
                break;
            }

            if (unitMan.DistanceBetweenUnits(enemyUnit, closestPlayer) <= quirk.detectRange)
            {
                aiData.state         = Unit.AiState.Chasing;
                aiData.chasingTarget = closestPlayer;
            }
            break;

        case Unit.AiState.Chasing:
            if (unitMan.DistanceBetweenUnits(enemyUnit, aiData.chasingTarget) > quirk.chaseRange)
            {
                aiData.state = Unit.AiState.Idle;
            }
            break;
        }
    }
Exemplo n.º 2
0
#pragma warning restore 0649
    #endregion     // Serialized Fields


    #endregion     // Fields

    #region Properties
    #endregion     // Properties

    #region Methods
    public override void DoUpdate()
    {
        Unit.State.Persistent    persistent = unit.state.persistent;
        Unit.State.Momentary     momentary  = unit.state.momentary;
        Unit.ManagerState        manState   = unit.manState;
        Unit.ManagerState.AiData aiData     = manState.aiData;

        switch (aiData.state)
        {
        case Unit.AiState.Idle:
            persistent.navTarget = manState.homePoint;
            break;

        case Unit.AiState.Chasing:
            persistent.navTarget = aiData.closestTarget.transform.position;
            break;
        }
    }