首先创建一个Unity3D的项目
打开资源商店添加一个人物模型
选择一个免费资源主角添加至项目中
在unity中打开后点击下载包
点击导入包
导入成功后会出现在资源包Assets下
右键创建地面
设置地面尺寸
创建一个材料方便给地面调配颜色
选择材料的颜色
将材质拖拽给地面组为组件
将主角包的预制体Prefab放置场景当中并且 双击主角Prefab让摄像机近距离视觉
点击摄像机后键盘按键CTRL + SHIFT + F让游戏运行视角与编辑视角一致
创建一个脚本
命名为PlayerRayClickNavigation.cs
打开脚本编写代码逻辑
using UnityEngine;
using UnityEngine.AI;
public class PlayerRayClickNavigation : MonoBehaviour{
NavMeshAgent meshAgent;
Vector3 targetPos;
private void Awake(){
meshAgent = GetComponent<NavMeshAgent>();
}
private void Start(){
targetPos = transform.position;
meshAgent.speed = 4f;
meshAgent.enabled = true;
Invoke("EnableNavMesh", 0.2f);
}
void EnableNavMesh(){
targetPos = transform.position;
meshAgent.enabled = true;
}
private void Update(){
if (!meshAgent.enabled)
return;
if (Input.GetMouseButtonDown(0)){
ClickMouse();
}
}
void ClickMouse(){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask("Land"))){
targetPos = hit.point;
meshAgent.SetDestination(targetPos);
}
}
}
编写好代码逻辑后处理Unity编辑器下的操作
首先为Plane添加一个父物体,方便日后更换地面或者布置场景
接下来我们添加导航包
成功导入之后
为Land父物体添加一个组件NavMeshSurface导航网格面
并设置为静态变量(改变所有子物体即可)
并为Land添加一个Layer层级
起名为Land
ranh对人物完全解压缩
为主角添加组件NavMeshAgent导航网格代理
取消组件勾选即可我们会在脚本中开启导航
点击Bake让编辑场景的地面变蓝
将代码挂载至场景中的主角身上
运行即可实现射线点击地面使人物移动
当然简单的点击移动实现了还并不完善,我们在接下来可以添加以下功能:
1.主角移动的动画
2.鼠标双击后主角进入跟随鼠标移动状态
3.鼠标单击地面的光标实现
4.让主角打开背包或者其他UI时点击UI功能时不会使人物进行移动(禁止射线穿透行为)
5.新输入系统的人物转向功能
6.摄像机跟随主角移动
7.人物释放技能等小功能
以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。
具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》
【【Unity回合2.5D】破碎纪元】 https://www.bilibili.com/video/BV1Z9vYeBEH6/?share_source=copy_web&vd_source=b7b18220b3643ac4a72a537747acaa30
下一篇文章制作任务点击移动后的动画及双击跟随功能