Пример #1
0
 public override void AICalculate()
 {
     if (this.m_Target == null)
     {
         BombermanIdleState idleState = new BombermanIdleState(this.m_AIBehavior, false);
         this.m_AIBehavior.ChangeState(idleState);
     }
     else
     {
         float distanceSqr = Vector2.SqrMagnitude((Vector2)PositionConvertor.GetWorldPositionFromActorTileIndex
                                                      (this.m_TargetPosition) - (Vector2)this.m_AIBehavior.transform.position);
         if (distanceSqr <= this.CharacterAI.AttackBehavior.AttackScopeSqr)
         {
             this.m_HPBehavior.Bomb();
             List <GameObject> relatedBuildings = new List <GameObject>();
             if (this.CharacterAI.AttackBehavior.DamageScope > 0)
             {
                 relatedBuildings = BattleSceneHelper.Instance.GetNearByBuilding(this.m_AIBehavior.transform.position, this.CharacterAI.AttackBehavior.DamageScope);
             }
             else
             {
                 relatedBuildings.Add(this.m_Target);
             }
             foreach (GameObject building in relatedBuildings)
             {
                 BuildingHPBehavior targetHP = building.GetComponent <BuildingHPBehavior>();
                 targetHP.DecreaseHP(this.CharacterAI.AttackBehavior.AttackValue, this.CharacterAI.AttackBehavior.AttackCategory);
             }
         }
         else
         {
             base.AICalculate();
         }
     }
 }
Пример #2
0
    public override void SetIdle(bool isResponseInstantly)
    {
        BombermanIdleState idleState = new BombermanIdleState(this, isResponseInstantly);

        this.ChangeState(idleState);
    }
Пример #3
0
    protected override void OnTargetReached()
    {
        BombermanIdleState idleState = new BombermanIdleState(this.m_AIBehavior, false);

        this.m_AIBehavior.ChangeState(idleState);
    }