Minecraft 1.18.1、1.18.2模组开发 20.生物AI(人工智能)

我们今天简单介绍一下MC中的一些生物智能,以及实现一个自定义AI到自己的生物身上

猫狗会被驯服,僵尸会被太阳晒,墨鱼会游泳,劫掠兽会进行AOE攻击…

1.首先,我的世界的所有的生物ai都会使用addGoal函数添加:

                            //参数:ai优先级(越小越优先),特定ai函数
        this.goalSelector.addGoal(1, new EntityUrias.AttackGoal(this));
所有的ai基本都在registerGoals()中进行声明与注册:
    //ai注册函数
    @Override
    protected void registerGoals() {
        super.registerGoals();
        //行为选择器goalSelector
        this.goalSelector.addGoal(1, new EntityUrias.AttackGoal(this));
        this.goalSelector.addGoal(1, new RandomLookAroundGoal(this));
        this.goalSelector.addGoal(2, new LookAtPlayerGoal(this, Player.class, 8.0F));
        //this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, LIVING_ENTITY_SELECTOR));
        this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D));
        
        //攻击目标选择器targetSelector
        this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers(ZombifiedPiglin.class));
        this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
        this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false));
        this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));

    }

2.一般来讲生物的行为选择器的可用ai大致包括这些:

优先级 名称
0 FloatGoal(水面漂浮)
1 PanicGoal(受到伤害,被攻击后会逃跑)
2 BreedGoal (可被喂养)
3 TemptGoal(跟随小麦)
4 LandOnOwnersShoulderGoal(落到主人肩膀上)
5 EatBlockGoal(吃草)
6 WaterAvoidingRandomStrollGoal(在水中不会随便活动)
7 LookAtPlayerGoal(看着玩家)
8 FollowOwnerGoal(跟随主人)
9 RandomLookAroundGoal(四下张望)

3.一般生物的目标选择器的可用ai大致包括这些:

优先级 名称
0 HurtByTargetGoal(可被攻击)
1 NearestAttackableTargetGoal (最近攻击单位)
2 AttackGoal (攻击行为ai)

4.为了自定义一个我们的ai,专门用于攻击其他生物,可以在我们的生物类中新建一个AttackGoal类:

    static class AttackGoal extends Goal {
                    //这里为我们的生物
        private final EntityDund parentEntity;
        protected int attackTimer = 0;
        //这里为我们的生物
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay_fearless

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值