首页 >> 大全

4:Navigation 智能导航地图烘焙

2023-06-21 大全 61 作者:考证青年

本教程学习均来自U3D中文课堂麦扣老师

1:

先创建一个3D项目,命名为3D RPG,然后在 里下载 PR

下载完后创建,

在和中选择渲染管线

2:Build Level

在中添加游戏素材

导入素材

将整个项目升级到URP

如果需要可以更换天空盒子

可以调整阴影

可以设置的属性

3: 发挥创意构建场景

下载并导入第二个

点开

第一个图标与相似,调整地面高低,第二个是用来柔化的,第三个可以将不同的物体刷上不同的颜色,区分不同地域,第四个可以快速将预制体刷到场景中,

下载

创建Plane

将渲染格子变为三角形

创建Plane的,选择为的Color URP,这样可以用在不同区域刷上不同的颜色

4: 智能导航地图烘焙

制作好地图如下

先将标记为 ,要使Tree不能让人物移动过去,选择只将这个物体标记为 而不是包括子物体。

使用 智能导航地图烘焙,将Tree和Grass标记为 ,设置Not ,将Grass设置为.

为人物添加Agent组件,调整大小,然后在菜单中调整数值再次进行烘焙

可以将一些可以移动的物体但不和人物发生穿模添加组件,

5: 鼠标控制人物移动

创建一个脚本名为,挂在相同名称的空物体上,

在脚本中加上命名空间using .,然后创建类,继承于的引用。

在类中创建类的对象,

由于类不是继承的,他需要被系统序列化才能显示出来,所以需要在前面加上一个描述:[.]。

如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;[System.Serializable]
public class EventVector3 : UnityEvent { } 
public class MouseManager : MonoBehaviour
{public EventVector3 onMouseClicked;
}

这样就能添加人物事件了

接下来写一个方法来获得鼠标点击屏幕上的数值

查找API手册

首先创建一个类型的变量来保存射线碰撞到的物体的相关信息,然后创建方法来设置指针的贴图和返回鼠标左键点击返回值,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;[System.Serializable]
public class EventVector3 : UnityEvent { } //创建类EventVector3,继承于UnityEvent的Vector3引用。
public class MouseManager : MonoBehaviour
{RaycastHit hitInfo; //保存射线碰撞到的物体的相关信息public EventVector3 onMouseClicked;private void Update(){SetCursorTexture();//设置指针的贴图MouseControl();//返回鼠标左键点击返回值}void SetCursorTexture() //设置指针的贴图{Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);if(Physics.Raycast(ray,out hitInfo)){//切换鼠标贴图}}void MouseControl()//返回鼠标左键点击返回值{if(Input.GetMouseButtonDown(0)&&hitInfo.collider != null){if(hitInfo.collider.gameObject.CompareTag("Ground")){onMouseClicked?.Invoke(hitInfo.point); //当前onMouseClicked事件如果不为空,将点击到地面上的坐标传回给这个事件,将}}}
}

现在就可以点击移动角色了。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了