游戏开发日志8(自动寻路系统)

由于写A*算法有点麻烦,所以我使用了一个开源的插件NavMeshPlus

在PackageManage里输入GitHub上的url:

https://github.com/h8man/NavMeshPlus.git

 

导入插件后新建一个空物体命名为NavMesh,并为它添加上Navigation Surface和NavMesh CollectSources2d组件

 为TileMap添加上Navigation Modfier组件

回到刚刚创建的NavMesh物体上点击 Navigation Surface的Bake,这样就会依据TileMap自动生成导航网格

在敌人身上添加Nav Mesh Agent

为其添加一个脚本

public class EnemyAI : MonoBehaviour
{
    public NavMeshAgent meshAgent;
    public Transform trans;

    // Start is called before the first frame update
    void Start()
    {
        meshAgent.updateRotation = false;
        meshAgent.updateUpAxis = false;
    }

    // Update is called once per frame
    void Update()
    {
        
        meshAgent.SetDestination(trans.position);
    }

   
}

 把敌人自身的Nav Mesh Agent组件赋给meshAgent,把要追击的主角赋给trans

测试敌人就会自动追踪主角了

但由于TileMap的一些collider和背景重叠了,分离起来比较麻烦,所以我暂不处理,应该有多张TileMap,分为背景层和碰撞层。

如果要让敌人绕过某个物体来追击主角,可以在物体上添加Navigation Modifier,把Area Type改为not walkable,然后重新Bake。

如果想添加可编辑区域的导航网格,可以改为添加Navigation ModiferVolume(需添加sprite)

 

 

 综上,自动寻路系统还很不完善,以后再慢慢改进,下回我将会为敌人制作血条。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值