XYGame-AI设计1-普通ifelse
XYGame-AI设计1-普通ifelse
梦想游戏人 发表于10个月前
XYGame-AI设计1-普通ifelse
  • 发表于 10个月前
  • 阅读 21
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

最普通的if else  简单的不能再简单了

  public override void AI_UpdateMSWithAI()
    {
        cd_atk--;

        //如果目标非法,那么寻找另外一个目标
        if (target == null || target.IsInValid())
        {
            this.AI_SearchNewTarget();
            return;
        }
        if (isHurt) return;

        // 有目标 ,先判断是否在攻击范围内
        float dis = target.ClaculateDistance(x, y);
        if (dis < 2)
        {
            //攻击范围内
            this.AI_AttackTarget();
        }
        else
        {
            //不在攻击范围内 移动向目标
            this.AI_MoveToTarget();
        }
    }
    public virtual void AI_SearchNewTarget()
    {
        ArrayList heros = EnemyMgr.ins.GetEnemys();// HeroMgr.ins.GetHeros();
        float minDis = 9999.0f;

        foreach (Entity h in heros)
        {//找出一个最近的玩家 作为锁定目标
            if (h == this) continue;
            float dis = h.ClaculateDistance(x, y);
            if (dis < minDis)
            {
                target = h;
                minDis = dis;
            }
        }
    }

    public virtual void AI_MoveToTarget()
    { 
        dir = (int)Utils.GetAngle(this.pos, target.pos);
    }
    public virtual void AI_AttackTarget()
    {
        if (target.isDie)
        {
            target = null;
            stand = true;
            return;
        }
        if (cd_atk <= 0)
        {
            cd_atk = 80;// 2S
            atk = true;
        }
        else
        {
            stand = true;
        }
    }

下一篇 重构为 FSM 

源代码:https://git.oschina.net/dreamyouxi/XYGame

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 33
博文 387
码字总数 110724
×
梦想游戏人
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: