上一节中,圆形机器人在到达指定的目标物体时向目标物体致意。实际情况是一个环境中会有很多对象。出发前进行整体扫描,了解环境中物体的总数和物体名称。让我们进行随机检查,让对象按照出发后扫描的顺序进行分析,逐一到达每个对象。
下图中的圆形机器人位于环境的左中部。
从左边的列表中,有 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 摄像机对准物体,如果中间有障碍物,就不能直奔障碍物,需要寻路算法。基于寻路算法,可以生成最优路径解。