利用射线 RaycastHit以及NavMeshAgent实现鼠标点击移动
//获取目标点
public GameObject target;
//获取agent
private NavMeshAgent agent;
// Use this for initialization
void Start () {
//获取到这个组件
agent = GetComponent<NavMeshAgent>();
}
// Update is called once per frame
void Update () {
//设置目标点后可以直接实现玩家到目标点的移动并且发生旋转
//agent.SetDestination(target.transform.position);
//屏幕空间点用像素定义,屏幕的左下为(0,0);右上是(PixelWidth.X,pixelHeight.Z)的位置是以世界单位衡量的到相机的距离。是像素坐标
//将世界坐标转化为屏幕坐标
//创建一条从摄像机到屏幕的射线,并穿过屏幕position(x,y)像素坐标(position.z被忽略掉)
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//射线检测到的信息//是一个结构体,用来储存射线返回来的信息
RaycastHit hit;
//第一个参数是射线,第二个是碰撞信息,第三个是碰撞距离,第四个是转化为2进制数后为1的对应层才可以移动
if (Physics.Raycast(ray, out hit, 100, 1 << 8)) //射线碰到物体后返回物体,返回true
{
if (Input.GetMouseButtonDown(0))
{
//改变位置
agent.SetDestination(new Vector3(hit.point.x,agent.transform.position.y,hit.point.z));
}
}
}
欢迎大家批改指正