コード例 #1
0
        public void Tick(float delta_time)
        {
            if (pursue_target != null)
            {
                if (pursue_target.IsAlive())
                {
                    if (my_unit.IsCanAttack(pursue_target))
                    {
                        //my_unit.Idle();

                        if (end_callback != null)
                        {
                            end_callback.Invoke(pursue_target);
                        }
                    }
                    else
                    {
                        if (my_unit.IsCanSeeUnit(pursue_target))
                        {
                            DoPursueTarget(delta_time);
                        }
                        else
                        {
                            //my_unit.SetPursueTarget(null);
                        }
                    }
                }
                else
                {
                    //my_unit.SetPursueTarget(null);
                }
            }
        }
コード例 #2
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;
                    }
                }
            }
        }
コード例 #3
0
ファイル: AttackAI.cs プロジェクト: bYsdTd/MileStones
        static public BLUnitBase FindCanAttackTarget(BLUnitHero hero_unit)
        {
            // 找到视野范围内,第一个能攻击到的目标
            var enemys = BattleVisionControl.Instance().GetEnemys(hero_unit.team_id);

            if (enemys != null)
            {
                var enumerator = enemys.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    BLUnitBase enemy_unit = enumerator.Current;
                    if (hero_unit.IsCanAttack(enemy_unit))
                    {
                        return(enemy_unit);
                    }
                }
            }

            return(null);
        }