コード例 #1
0
    public void Update(float delta)
    {
        if (enemy == null)
        {
            hostAi.enemies = new List <Actor>();
            hostAi.ChangeState(StateAi.States.Roaming);
        }
        if (EnemyInRangeCheck(delta))
        {
            hostAi.ChangeState(StateAi.States.Fighting);
        }

        Pursue(delta);
    }
コード例 #2
0
 public void Update(float delta)
 {
     if (EnemyCheck(delta))
     {
         hostAi.ChangeState(StateAi.States.Pursuing);
     }
     Wander(delta);
 }
コード例 #3
0
    public void Update(float delta)
    {
        if (enemy == null)
        {
            hostAi.ChangeState(StateAi.States.Roaming);
        }

        aimed        = hostAi.IsAimedAt(enemy.Transform.origin, RangedAimMargin);
        currentRange = hostAi.DistanceToActor(enemy);
        inRange      = currentRange <= RangedRange;

        if (!aimDelayActive)
        {
            Strafe(delta);
            MaintainDistance(delta);
        }
        Attack(delta);
    }
コード例 #4
0
    public void Init(StateAi hostAi)
    {
        this.hostAi = hostAi;

        if (hostAi.enemies.Count == 0 || hostAi.enemies[0] == null)
        {
            hostAi.ChangeState(StateAi.States.Roaming);
            return;
        }

        enemy = hostAi.enemies[0];
    }
コード例 #5
0
    public void Init(StateAi hostAi)
    {
        this.hostAi = hostAi;
        if (hostAi.enemies.Count == 0 || hostAi.enemies[0] == null)
        {
            hostAi.ChangeState(StateAi.States.Roaming);
            return;
        }

        // TODO: Make this choose the closest enemy
        enemy = hostAi.enemies[0];
    }
コード例 #6
0
    public void Update(float delta)
    {
        if (enemy == null)
        {
            hostAi.ChangeState(StateAi.States.Roaming);
        }

        aimed   = hostAi.IsAimedAt(enemy.Transform.origin, MeleeAimMargin);
        inRange = hostAi.DistanceToActor(enemy) <= MeleeRange;
        Strafe(delta);
        CloseDistance(delta);
        Attack(delta);
    }
コード例 #7
0
    public void DetermineAttack()
    {
        List <Item> items = hostAi.GetItems();


        int rangedSlot = SelectWeaponSlot(true);

        if (rangedSlot != -1)
        {
            hostActor.EquipHotbarItem(rangedSlot);
            hostAi.ChangeState(StateAi.States.Ranged);
            return;
        }

        int meleeSlot = SelectWeaponSlot(false);

        if (meleeSlot != -1)
        {
            hostActor.EquipHotbarItem(meleeSlot);
        }

        hostAi.ChangeState(StateAi.States.Melee);
    }