内容纲要

Monster中障碍图无法正常生成

代码:

        //生成障碍图
        List<Vector2> walkAbles = new List<Vector2>();
        int beansMax = Beans.instance.beansArray.Count;
        for (int row = 0; row < beansMax ; row++)
        {
            Transform transBean = Beans.instance.beansArray[row].transform;//获取豆子

            Vector2 p = transBean.position;//取得豆子坐标
            p = p + new Vector2(9.25f, 11.4f);//将其偏移到以(0,0)为原点
            walkAbles.Add(p);
        }

        finder = new AStart2(
            walkAbles,  //对象
            false,      //是否是障碍
            29,         //行
            26          //列
            );

问题:

将该段代码注释后敌人可以从按路径移动的模式切换到巡逻模式,直到检测到玩家才会出现报错停止移动,报错代码:

if (e.canSeePlayer)
{
    Vector2 start = dest + new Vector2(9.25f, 11.4f);
    Vector2 end = e.lastSeenPlayer + new Vector2(9.25f, 11.4f);
    List<Vector2> path = e.finder.Find(start, end);//返回的路径是以(0,0)为原点的
    //转换坐标从地图坐标到场景坐标
    for (int i = 0; i < path.Count; i++)
    {
        path[i] = path[i] - new Vector2(9.25f, 11.4f);
    }
    e.stateMachine.ChangeState(new WayPointState(path));
    return;
}

而如果取消注释,则直接报错无法移动。报错代码:

curState.Update(owner);

因为我是直接用代码生成的预置体bean,通过触发器使多余的bean消除,现在生成的障碍图是包含被消除的bean的。

发表评论