现在的大部分mmo游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。使用Unity来开发手游,自动寻路可以有很多种实现方式。第一种比较传统的是使用A星寻路,它是一种比较传统的人工智能算法,在游戏开发中比较常用到。大部分的页游和端游都用到这种技术。在Unity游戏也可以用这种技术,Asset Store上面已经有相关的组件了,感兴趣的同学可以自己去了解。我在后面有机会再来详细介绍了。今天我们来学习Unity官方内置的寻路插件-Navmesh。由于内容比较多,我们将分几次来系统学习。今天先通过学习一个最简单的例子来入门。
(转载请注明原文地址http://blog.csdn.net/janeky/article/details/17457533)
using UnityEngine; using System.Collections; //Author:[email protected] public class PlayerController : MonoBehaviour { private NavMeshAgent agent; void Start() { //获取组件 agent = GetComponent<NavMeshAgent>(); } void Update() { //鼠标左键点击 if (Input.GetMouseButtonDown(0)) { //摄像机到点击位置的的射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { //判断点击的是否地形 if (!hit.collider.name.Equals("Terrain")) { return; } //点击位置坐标 Vector3 point = hit.point; //转向 transform.LookAt(new Vector3(point.x, transform.position.y, point.z)); //设置寻路的目标点 agent.SetDestination(point); } } //播放动画,判断是否到达了目的地,播放空闲或者跑步动画 if (agent.remainingDistance == 0) { animation.Play("idle"); } else { animation.Play("run"); } } }完成了,可以看看效果:
http://pan.baidu.com/s/1hqC6v4o
1.http://www.xuanyusong.com/
2.http://liweizhaolili.blog.163.com/
3.http://game.ceeger.com/Components/class-NavMeshAgent.html