圆形机器人到达指定目标物体时的巡逻任务图大全

圆形机器人到达指定目标物体时的巡逻任务图大全

上一节中,圆形机器人在到达指定的目标物体时向目标物体致意。实际情况是一个环境中会有很多对象。出发前进行整体扫描,了解环境中物体的总数和物体名称。让我们进行随机检查,让对象按照出发后扫描的顺序进行分析,逐一到达每个对象。

下图中的圆形机器人位于环境的左中部。

在这里插入图片描述

从左边的列表中,有 14 个对象是有效的。除去圆形机器人本身2d游戏素材,它需要扫描13个物体并一个一个到达。

在密码盘上unity 摄像机对准物体

公共类 AutoKnowObject:MonoBehaviour

{

游戏对象我的;

游戏对象会;

GameObject[] GameObjectAll;

// 在第一帧更新之前调用 Start

float ObjectsNum = 0;//所有对象的个数

float goalNum = 1;//目标对象个数

无效开始()

{

    //找出所有物体对象
    GameObjectAll = AutoKnowObjectsAll();
    //Debug.Log(MyObjectName().name);
}
// Update is called once per frame
void Update()
{
//移至各个物体处
  //  foreach (GameObject go in GameObjectAll)
  //{
        //Debug.Log("GameObject name is " + go.name);
        // Debug.Log(go.name + "'s position is " + AutoKnowObjectsPosion(go));
        // will = GameObject.Find("Square");
    my = MyObjectName();
    Debug.Log("myObject name is " + my.name + " and my position is " + AutoKnowObjectsPosion(my));
    //will = go;
    if ((int)ObjectsNum < AutoKnowObjectsNum())
    {
        will = GameObjectAll[(int)ObjectsNum];
    Debug.Log("willObject name is " + will.name +" and its position is " + AutoKnowObjectsPosion(will));
   
        if (my.name != will.name)
        {
            Debug.Log("goalObject name is " + will.name + " and " + will.name + " 's position is " + AutoKnowObjectsPosion(will));
            Debug.Log("Now goal numbers is " + goalNum + "个");
            AutoMoveToObjects(my, (float)0.5, will);
            if (A2B(my, will).sqrMagnitude < 1)//到达目标物位置处
            {
                Debug.Log(my.name + " comes to " + will.name + " 's position.");
                ObjectsNum = ObjectsNum + 1;
                goalNum += 1;
                Debug.Log("Now new goal numbers is " + goalNum + "个");
            }
        }
        else
        {
            ObjectsNum = ObjectsNum + 1;
        }
    }
    else {
        Debug.Log("myObject name is " + my.name + " and my search is finished. " );
    }
    // }
}

//4-1。找到所有对象

GameObject[] AutoKnowObjectsAll()

{

// 浮动对象数 = 0;

// 查找区域中的对象

GameObject[] bodies = FindObjectsOfType(typeof(GameObject)) as GameObject[];

归还尸体;

}

//4-2 求所有对象的个数

int AutoKnowObjectsNum()

{

// 浮动对象数 = 0;

// 查找区域中的对象

GameObject[] bodies = FindObjectsOfType(typeof(GameObject)) as GameObject[];

返回机构。长度;

}

}

机器人一个一个地走向每一个物体,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如下图所示完成巡逻任务。

在这里插入图片描述

简单总结一下人物立绘,本节实现了圆形机器人的检测。每个物体暂时没有刚体属性。如果每个物体都有刚体属性unity 摄像机对准物体,如果中间有障碍物,就不能直奔障碍物,需要寻路算法。基于寻路算法,可以生成最优路径解。