您的位置:首页 > 移动开发 > Unity3D

Unity_脚本与寻路系统的结合使用_013

2017-07-22 10:02 337 查看

什么是AI

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

人工智能的发展的领域有哪些?

智能机器人,无人驾驶,Alpha go,小度机器人,智能家居。

游戏中加入AI有什么好处

提高游戏的可玩性

激发玩家的挑战欲望

增加游戏的友好体验

Unity中的Navigation导航

NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术,将游戏中复杂的结构组织关系简化为带有一定信息的网格,在这些网格基础上通过一系列的计算来实现自动寻路。导航时,只需要给导航物体挂载导航组建,导航物体便会自行根据目标点来寻找最直接的路线,并沿着该线路到达目标点。

绕过障碍物

在地面上创建一个Plane座位地面,在地面上穿件一个Cube 并将此拉伸作为障碍物。并将此地面和障碍物勾选Navigation Static。

在菜单栏window中点击Navigation面板,在Navigation面板中的Bake选项卡中点击Bake按钮。烘焙导航网格。

在Plane上创建游戏对象。游戏对象头上的绿色帽子表示游戏对象的前方。

如图



在游戏对象身上添加NavigationAgent组件。同时在添加新的脚本。脚本的代码如下 :实现的功能是点击哪里,游戏对象就会移动到哪里。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class NavigationTest : MonoBehaviour
{

private NavMeshAgent agent;
private Vector3 targetposition;
// Use this for initialization
void Start () {
agent = GetComponent<NavMeshAgent>();
targetposition = transform.position;
}

// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
//从摄像机视口出发到鼠标点击的位置产生一条射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray,out hit,100))
{
//如果点击到的是地面的话  就将点击的点坐作为目标点
if (hit.collider.tag =="Plane")
{
targetposition = hit.point;
}
}
}
//设置目标点
agent.SetDestination(targetposition);
}
}


跳过障碍物

在这里我们让游戏对象从一个平面跳跃到另外一个平面上,如图



右边的地面其实就是从左边复制(Ctrl+D)过去的,选中左边的地面

然后操作如图



再次选中右边的地面进行同样的操作,选择Bake选项卡,点击Bake按钮烘焙地面。代码和上面的代码是一样的。这样就可以实现在两个地面上进行跳跃

分图层寻路

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: