| |
|
|
开发:
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虚化程度 动画控制器在这里导入人物的动画控制器,使用融合树对站立行走跑步融合,然后脚本中设置参数即可。 遮挡剔除
?? 接下来实现人物在树或者其他遮挡物之后会有一个大概轮廓的效果。 添加一个菲尼尔效果:
这里需要一个颜色,所以创建color: ? 打开着色器并创建color 接下来希望这个颜色和菲尼尔有一个乘法的效果,这样可以把颜色加到菲尼尔现象当中,
再把color放上来
将其连起来 希望这个菲尼尔效果可以有一些噪点让效果看上去更实际,所以添加一些额外常用的节点。
添加一个alpha用于遮挡阈值
?最终设定如下所示: ? 接下来回到游戏 ,实现一个人物走到树木后面就应用这个材质,这就涉及到URP
接下来给玩家添加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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/3 16:21:04- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |