示例#1
0
 void UpdateFleeing()
 {
     if (!character.moveToTarget(fleePosition, character.speed * 1.5f))
     {
         currentRangedState = RangedAttackStates.IDLE;
     }
 }
示例#2
0
    void StartFleeing(RangedAttackStates previousState)
    {
        float xPos = character.getFeetPosition().x;
        float d1   = Mathf.Abs(-2.0f - xPos);
        float d2   = Mathf.Abs(2.0f - xPos);

        fleePosition   = character.getFeetPosition();
        fleePosition.x = (d1 > d2)?-2.0f:2.0f;
        currentState   = Attack.AttackStates.RUNNING;
    }
示例#3
0
    public void CheckIfMustFlee()
    {
        if (hitsToFlee <= 0)
        {
            return;
        }

        BasicEnemy e = character as BasicEnemy;

        if (e.numHits >= hitsToFlee)
        {
            e.numHits          = 0;
            currentRangedState = RangedAttackStates.FLEEING;
        }
    }
示例#4
0
    void UpdateFollowing()
    {
        Hero       h = character.currentTarget as Hero;
        BasicEnemy e = character as BasicEnemy;

        Vector2 diff = h.getFeetPosition() - e.getFeetPosition();

        OrientCharacter(diff.x);

        if (InAttackRange(diff.magnitude))
        {
            currentRangedState = RangedAttackStates.ATTACKING;
        }
        else
        {
            character.moveToTarget(h, e.speed);
        }
    }
示例#5
0
    void UpdateIdle()
    {
        Hero       h = character.currentTarget as Hero;
        BasicEnemy e = character as BasicEnemy;

        Vector2 diff = h.getFeetPosition() - e.getFeetPosition();

        OrientCharacter(diff.x);

        if (InAttackRange(diff.magnitude))
        {
            if (rechargeTimer <= 0.0f)
            {
                currentRangedState = RangedAttackStates.ATTACKING;
            }
        }
        else
        {
            currentRangedState = RangedAttackStates.FOLLOWING;
        }
    }
示例#6
0
 public override void onEndAttack()
 {
     currentRangedState = RangedAttackStates.IDLE;
     base.onEndAttack();
 }
示例#7
0
 void StartAttacking(RangedAttackStates previousState)
 {
     currentState = Attack.AttackStates.ATTACKING;
 }
示例#8
0
 void StartFollowing(RangedAttackStates previousState)
 {
     currentState = Attack.AttackStates.RUNNING;
 }
示例#9
0
 void StartIdle(RangedAttackStates previousState)
 {
     currentState = Attack.AttackStates.IDLE;
 }