Пример #1
0
        virtual public void AttackImplementTick()
        {
            if (my_unit.is_move_attack || (!my_unit.IsMoveState()))
            {
                if (target_unit == null)
                {
                    target_unit = AttackAI.FindCanAttackTarget(my_unit);

                    if (target_unit != null)
                    {
                        DoAttack(target_unit);
                    }
                }
                else
                {
                    if (target_unit.IsAlive())
                    {
                        if (my_unit.IsCanAttack(target_unit))
                        {
                            DoAttack(target_unit);
                        }
                        else
                        {
                            // 打不到,清空目标
                            target_unit = null;
                        }
                    }
                    else
                    {
                        target_unit = null;
                    }
                }
            }
        }
Пример #2
0
        public void InitAI()
        {
            attack_ai         = new AttackAI();
            attack_ai.my_unit = this;

            // 攻击类型也有不同的组件, 有弹道,没弹道等
            attack_ai.InitAttackComponent();

//			// 根据类型增加是否有追击的组件
//			if(can_pursue)
//			{
//				attack_ai.InitPursueTargetComponent();
//			}
//
//
//
//			revive_ai = new ReviveAI();
//			revive_ai.my_unit = this;
        }
Пример #3
0
 // 攻击类型决定的是否可攻击
 public bool IsCanAttackByAttackType(BLUnitBase enemy_unit)
 {
     return(AttackAI.IsCanAttackByAttackType(this, enemy_unit));
 }