| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity3D RPG实现 (上) -> 正文阅读 |
|
[游戏开发]Unity3D RPG实现 (上) |
目录 环境搭建安装URP先安装URP ↑安装URP的unity package 新建一个渲染管线: 在edit里设置渲染管线: 升级URP,就可以将人物原本丢失的材质补回来。 ? 添加天空盒?然后在rendering-lighting-environment里可以更换天空盒 然后可以在此设置天空盒: 设定阴影渲染这个设置可以设置最大渲染的阴影的距离,超过这个距离则不再渲染,这个可以节省资源 这里可以调整阴影的各种参数: 这个地方可以修改虚实阴影分成几级,比如这里,超过1级12.5m渲染出来的阴影就会比较虚了。? 注意要开启HDR,方便后期进行后处理 这里还可以添加抗锯齿 修改光照渲染在window-lighting添加光照文件: 修改模式为烘培,图形为GPU? 然后点击右下角的生成光照: 然后点击生成光照: 一般不勾选自动生成 ? 注意到此时光变成了蓝紫色,这是因为光照默认是用skybox的颜色的,可以在environment这里进行修改: 环境搭建按住v可以更好的设置景物:? ctrl+shift也可以进行吸附 调整相机角度可以通过在scene场景中先找好角度,在选中相机的情况下 然后按下ctrl+shift+f来让相机对准: ?可以创建一个空物体作为分界线,以下的物体全是人物: ?安装polybrush,在sample里导入含urp的shader ? 在tools里打开:? 这里调整高度时,可以通过绕xyz轴还是物体表面 这个可以实现多重对称笔刷 柔化可以让起伏更加平滑 第三个刷色,直接刷色无法上色是因为地面并不是polybrush的material 想要上色可以在polybrush自带的material里的shader右键添加材质: 然后将该材质托给地面,则此时可以上色了 这就可以用来初期规划不同的地方用来做什么? 希望整个场景变成某一颜色就选中flood 第四个 将预制体放上去后即可实现点击即出prefabs: ? 按住ctrl去点按即可删除 扩大地图接下来我们扩大地图,但是单纯的扩大size,物体的顶点数并不会增多,这里可以使用插件:probuilder: ?在tools里打开, 可以按住shift时可以查看其详细信息 按住alt选中上面那个? 可以在这里修改其形状 ? 以此添加plane 不过要注意这个物体的中心在角落: 点击这个可以使它回到中心 progrid的使用: 先启用 还可以实现展示x或y或z平面的网格。 这里的2代表的是一个格子0.2,移动物体也是按照一次移动0.2实现的。 在tools里可以关闭 ? 点击这个按钮可以使得网格平面由四格变为三格,可以通过创建材质使得其有颜色: 实现导航烘焙地面: 对地面选择navigation static? 对树的区域同样选中,但是烘焙的时候要选择not walkable: 烘焙成功后 但是不可行走的区域不够精细 为了改变这点 对玩家添加agent ?为了使得不可 行走的区域变得精细,需要调整人物的胖瘦高矮 并且在导航这一块也要修改: 上面是静态的障碍物,无法移动的,如果想实现动态的障碍物可以给物体添加障碍物的组件,并且把carve勾选上,就可以实现这块区域在烘焙的时候会被切开来 鼠标控制人物移动?创建一个鼠标点击事件,将人物拖拽进来,并且选择destionation 随后用ScrennPointToRay,获取鼠标所点击的位置 然后给地面设置tag,给MouseManager添加这段代码:
即可实现人物走向鼠标点击的地方。 这里可以调整速度和方向: auto braking实现刹车效果。 以上可以实现鼠标点击人物移动的方式,但是需要将人物拖拽进来 如果以后切换场景或者新建游戏或者多个场景,则不方便拖拽和保存,接下来介绍另外一种方式,将人物移动的这个函数注册到event当中,? 无论切换场景还是新建角色,都可以将人物添加到OnMouseClicked的这个event当中。 为了改变上面所说的,此处将将MouseManager设定为单例模式 用event的方式替代上个注释中的方法, ?event事件的使用方式就是需要有别人注册它。 当调用这个方法时,所有注册了这个事件的函数都会被调用! 接下来在PlayerController中写一个MoveToTarget函数: 我们需要实现将这个函数的方法注册到mouseManager刚才的那个事件中,只要那个事件一启用,它就会调用这个函数。 (带有闪电的就说明是事件) ? 总结一下就是,当我们点击到地面时,它会执行所有注册到该事件上的函数,并通过Invoke传入该函数所需的参数: ?? OnMouseClicked?.Invoke(hitInfo.point); 于是接下来就可以实现鼠标点击则人物移动的方式了。 鼠标指针切换将图片导入进来并更改为Cursor 选择Point,然后再Apply一下? 第二个参数用来记录偏移值,是因为要使图片的中心才具有点击效果。 注意到鼠标尺寸过大,可以在这里进行调整: 随后即可调整实现鼠标变成指针的效果。 相机跟随此处先补充一下三个功能: Move to view 把你选中的游戏对象移动到Scene的中心点: Align With View 这个用法不移动scene,是将被选中的物体移动到和scene的中心点一致 就要把普通游戏对象和Camera 分开来说了 选中普通的游戏对象:将对象的中心点移动到Scene的中心点一致 选中Camera:让Game视角和Scene视角一致 Align With View to Selected 这个是移动Scene的,把Scene移动到和选中物体的中心点一致 选中普通的游戏对象:将Scene的中心点移动到和对象的中心点一致 选中Camera:让Scene视角和Game视角一致 创建cinemachine并调整: 后处理给远处添加雾,添加完雾后效果如下所示: 注意要在这里启用: 在Main Camera的rending里也要启用post-processing 开启bloom后效果: 然后添加ToneMapping,:模式ACES 畸变的效果: 此处只需要移动 景深? ? ?FocalLength 远处虚化距离,Apeture虚化程度 动画控制器在这里导入人物的动画控制器,使用融合树对站立行走跑步融合,然后脚本中设置参数即可。 遮挡剔除?创建一个shader和其对应的material ?? 接下来实现人物在树或者其他遮挡物之后会有一个大概轮廓的效果。 添加一个菲尼尔效果: 这里需要一个颜色,所以创建color: ? 打开着色器并创建color 接下来希望这个颜色和菲尼尔有一个乘法的效果,这样可以把颜色加到菲尼尔现象当中, 再把color放上来 将其连起来 希望这个菲尼尔效果可以有一些噪点让效果看上去更实际,所以添加一些额外常用的节点。 添加dither,调整参数使其出现密密麻麻的小点,可以用来填充球心? 添加一个alpha用于遮挡阈值 ?最终设定如下所示: ? 接下来回到游戏 ,实现一个人物走到树木后面就应用这个材质,这就涉及到URP 这个是一个render feature,意思是在渲染的时候会有一些feature可以使用。? 接下来给玩家添加player的图层,并且在urp中选择: ?这样子就可以实现人物在树后面时也有这种效果: 效果如下: 但是人物在镜头前面的时候会有问题,这时候我们在前景也添加一个render 添加后恢复正常。 ?此处还有个问题就是无法点击树后面,此处可以将tree选成ignore Raycast即可。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 16:48:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |