jin_gang
这个类的几种构造方法参数分别代表什么,有啥用呀?有没有大佬添加过这个ai我只知道第一个是实体自己,第二个是会向哪个生物攻击别的看不太懂



OOTW_Z
本帖最后由 OOTW_Z 于 2022-6-25 19:46 编辑

这三个构造方法是顺序调用补全默认输入的,以最终构造器也就是第三个构造器来讲:
targetclass是个生物实体,不能是玩家,否则该项ai一下判断不会激活:
这个实体被用于传入getEntitiesWithinAABB来获取一个list,同时传入的参还有AxisAlignedBB类,是通过FOLLOW_RANGE直接相关获取的,也就是生物的那几大基本属性之一,这个followrange是你传入的entitycreature内的
回到AxisAlignedBB类,内部参数是一个坐标域然后else里是判断对象是玩家
那么根据理性分析,大概功能是,判断该生物追逐范围内是否有指定生物,有就执行该生物的ai,否则再判断追逐范围内有无玩家,执行一段函数。

OOTW_Z
本帖最后由 OOTW_Z 于 2022-6-25 20:11 编辑

哥们再给我评个分吧,30金粒对于这个问题有点少啊我就想要升级

OOTW_Z
chance是改ai执行概率,排在我说的判断特定生物前判断使用
checkSight是是否检查视野,是就执行父类的检查视野是否能看到目标生物的代码块getEntitySenses().canSee(entitylivingbase)
功能理解的话应当是:目标生物进入范围后是否无视视野障碍物进行追逐的意思(闻着味就来了)
onlynearby也是一项检查if (this.nearbyOnly)
            {
                if (--this.targetSearchDelay <= 0)
                {
                    this.targetSearchStatus = 0;
                }

                if (this.targetSearchStatus == 0)
                {
                    this.targetSearchStatus = this.canEasilyReach(target) ? 1 : 2;
                }

                if (this.targetSearchStatus == 2)
                {
                    return false;
                }
            }

            return true;

其中的targetSearchDelay默认为0受canEasilyReach方法影响
this.targetSearchDelay = 10 + this.taskOwner.getRNG().nextInt(5);
可以看到会增加
这段是:先检查当targetSearchDelay小于0的时候置零,如果为0调用this.canEasilyReach(target) ? 1 : 2;
private boolean canEasilyReach(EntityLivingBase target)
    {
        this.targetSearchDelay = 10 + this.taskOwner.getRNG().nextInt(5);
        Path path = this.taskOwner.getNavigator().getPathToEntityLiving(target);

        if (path == null)
        {
            return false;
        }
        else
        {
            PathPoint pathpoint = path.getFinalPathPoint();

            if (pathpoint == null)
            {
                return false;
            }
            else
            {
                int i = pathpoint.x - MathHelper.floor(target.posX);
                int j = pathpoint.z - MathHelper.floor(target.posZ);
                return (double)(i * i + j * j) <= 2.25D;
            }
      
上面是canEasilyReach方法具体计算需要你自己分析了因为这个方法已经没有未知参数了
回到onlynearby检查,canEasilyReach(顾名思义即可)运算结束后,targetSearchDelay会被设置为1或者2,2的话会导致ai不激活
这就是onlynearby参数功能

jin_gang
OOTW_Z 发表于 2022-6-25 20:10
chance是改ai执行概率,排在我说的判断特定生物前判断使用
checkSight是是否检查视野,是就执行父类的检查 ...

好的谢谢大佬,帮大忙了

第一页 上一页 下一页 最后一页