内容纲要

AStar的寻路使用

AStar

参数1:List obstacles
用来表名该路劲集合的坐标位置
参数2:bool isObstacle
用来表示第一个参数是障碍物点还是可以通过的点
可以通过的点填false障碍点true
参数3:int row
填写地图多少行
参数4:int col
填写地图多少列

  //先生成障碍图
        List<Vector2> walkables = new List<Vector2>();

        for (int row = 0; row < beans.childCount; row++)
        {
            //遍历beans中的row
            Transform transRow = beans.GetChild(row);
            //获取当前row的点
            for (int col = 0; col < transRow.childCount; col++)
            {
                Transform dot = transRow.GetChild(col);

                Vector2 p = dot.position;//取得豆子的坐标
                p = p + new Vector2(12.5f,14f);//将其偏移到以(0,0)为原点
                walkables.Add(p);
            }
        }

        finder = new AStar2(walkables, false, 29, 26);

通过Transform来获取获取豆子父节点豆子集合
在通过豆子的集合来获取豆子所有的坐标创建可移动的位置

在怪物子节点中创建一个触发器VisibleRange用来发现玩家
创建变量bool CanSeePlayer来判断是否发玩家

使用GameObject对象中有标签Tag属性可以通过标签来进行指定Tag属性主要用于对游戏对象进行分类

发现玩家后获取玩家的最后位置在通过AStar的Find方法来进行寻路获取到一条到达玩家最后位置的路径

将该路径放入WaypointState进行移动当移动到该位置后再将怪物的状态改变成巡逻状态

发表评论