Unity-实现鼠标点击型人物移动
2023-01-20 本文已影响0人
ssttIsme
![](https://img.haomeiwen.com/i5128967/174a68a09eb06466.gif)
创建一个Plane
![](https://img.haomeiwen.com/i5128967/301902cf05bf7d1a.png)
创建一个
Capsule
放在地面上,模拟为人![](https://img.haomeiwen.com/i5128967/753efa59c9d7f316.png)
勾上地面的
Navgiation Static
![](https://img.haomeiwen.com/i5128967/d3deeeec91319a61.png)
打开
Navigation
窗口,修改一下Agent Radius
为0.2,点击Bake
,点击时会提示保存场景,保存为需要的名字,比如说Main
即可![](https://img.haomeiwen.com/i5128967/ca0d7aef5ccad253.png)
![](https://img.haomeiwen.com/i5128967/1e4912b5d3645fbe.png)
新建一个名字为
Human
的脚本![](https://img.haomeiwen.com/i5128967/f2c78527bd1f25e5.png)
编写代码如下
using UnityEngine;
using System.Collections;
public class Human : MonoBehaviour {
public NavMeshAgent agent;
// 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)){
agent.SetDestination(hit.point);
}
}
}
}
为Capsule添加Nav Mesh Agent
![](https://img.haomeiwen.com/i5128967/13b43ced0e6278e1.png)
为Capsule
挂载Human
脚本
![](https://img.haomeiwen.com/i5128967/b24b0c66b4775251.png)
将
Nav Mesh Agent
拖入Agent
位置进行赋值![](https://img.haomeiwen.com/i5128967/a52231d8e25018b6.png)
![](https://img.haomeiwen.com/i5128967/970bd8eba14f2517.png)
![](https://img.haomeiwen.com/i5128967/9e4b66aa63791fa0.png)
运行可发现功能已实现
![](https://img.haomeiwen.com/i5128967/0d5dd17574fe14e2.png)
如果需要摄像机跟随,先调整好摄像机
Main Camera
的位置,比如像作者这样![](https://img.haomeiwen.com/i5128967/a0dbccd322a85f20.png)
新建一个名字为
FollowTarget
的脚本![](https://img.haomeiwen.com/i5128967/c2cdf96dd785e80b.png)
编写代码如下
using UnityEngine;
using System.Collections;
public class FollowTarget : MonoBehaviour {
//跟随目标
public Transform target;
//偏移
public Vector3 offset;
// Use this for initialization
void Start () {
offset = transform.position - target.position;
}
// Update is called once per frame
void Update () {
transform.position = offset + target.position;
}
}
为Camera
挂载FollowTarget
脚本
![](https://img.haomeiwen.com/i5128967/db268259a206f148.png)
拖入
Capsule
在Target
位置进行赋值![](https://img.haomeiwen.com/i5128967/3be3d52918a01411.png)
![](https://img.haomeiwen.com/i5128967/6be14057cae6d1d0.png)
运行即可
![](https://img.haomeiwen.com/i5128967/06b7b8ba814298e0.png)