// 功能:
// 挂载对象:
//注意:
using UnityEngine;
using System.Collections;
public class scricubefollow : MonoBehaviour
{
//public Transform m_sph;
// 自身渲染器组件
LineRenderer m_Line;
// 自身导航组件
NavMeshAgent m_agent;
RaycastHit hit = new RaycastHit ();
void Awake ()
{
// 拿到两个组件
m_Line = GetComponent ();
m_agent = GetComponent ();
//m_Line.enabled = false;
}
void Update ()
{
// 鼠标鼠标点击哪里就去哪里
if (Input.GetMouseButtonDown (0)) {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit)) {
//让主角前往目的地
m_agent.SetDestination (hit.point);
// 绘制线条 (在此处角色走完的路线不会消失)
DrawLine (hit);
}
}
// 绘制线条 (在此处角色走完的路线会消失)
//DrawLine (hit);
}
void DrawLine (RaycastHit hit)
{
// 绘制线条的核心代码:
//1: 告诉我多少拐点
// m_Line.SetVertexCount ();
//2 告诉我拐点的位置在哪里
// m_Line.SetPositions ();
NavMeshPath path = new NavMeshPath ();
m_Line.SetPosition (path.corners.Length, hit.point);
// 计算从导航数据中计算出来所要走的路径信息
m_agent.CalculatePath (hit.point, path);
//path.corners
// 设置要绘制的导航路线的拐点
m_Line.SetVertexCount (path.corners.Length);
// 设置拐点的位置
m_Line.SetPositions (path.corners);
// 也可使用循环来设置各个点
//for (int i = 0; i < path.corners.Length; i++) {
//m_Line.SetPosition (i, path.corners [i]);
//}
//激活线性组件
//m_Line.enabled = true;
}
}
网友评论