在SLG等游戏中,相机总是固定为俯视角(上帝视角)。为了更好地管理游戏数据,需要对地图进行分块,只处理视野内的部分。判定某个单位是否在视野内有很多方法了,但是要么不够精确,要么性能不够,要么无法与AOI配合。 一个可行的方案就是将相机在地面上的视野计算出一个AABB2D包围盒,然后基于此包围盒来计算AOI、显隐等。这个方案效率够高,而且对俯视角适配较好。 下面讲讲原理和具体实现。1、俯视角的相机视野 相机在俯视角下,一般在地面的视野是个梯形,如下图所示: 绿色的部分就是相机的视野范围,红框部分为其外接的AABB2D包围盒。然后我们把这个红框部分视为相机
1.1贴图共使用以上7张贴图,分别是面部阴影贴图、身体颜色贴图、头发颜色贴图、参数贴图、ramptexture、参数贴图、脸部颜色贴图。1.2Pass该shader主要有三个pass,分别是角色主要颜色和光照输出的结果,轮廓边,阴影输出。1.3光照 1.4分支身体、脸部、头发三个分支//分支声明#pragmashader_feature___SHADERENUM_BASE_SHADERENUM_FACE_SHADERENUM_HAIR1.5采样ramp贴图方法//ramptexture采样函数float3NPR_Ramp(floatNdotL){floathalfLambertRamp=smo
什么是协程协程,即Coroutine,顾名思义,协助程序的意思。我们在进行主任务的同时,需要一些分支任务来配合工作,这就是协程的用处。协程不是进程或线程,它是一个特殊的函数,可以认为它是一个返回值是IEnumerator(不知道也没关系,后面会说)的函数。协程依然是在主线程上进行的,是一种异步多任务处理的方式,相比于线程,开辟多个协程开销不大,适合对某任务进行分时处理。我们只要知道协程是一个可以暂停执行,暂停后回到主函数,执行主函数剩余的部分,直到中断指令完成后,从中断指令的下一行继续执行协程剩余的函数就行。前置知识首先我们要知道协程是通过迭代器实现的。什么是迭代器?迭代器是一种设计模式,可以
光照烘培光照模式切换为Baked或Mixed,Baked模式完全使用光照贴图模拟光照,运行时修改光照颜色不生效,Mixed模式也使用光照贴图,并且进行一些实时运算,运行时修改光照颜色会生效受光照影响的物体勾选ContributeGI,或者直接勾选Static打开Lighting窗口,创建配置文件Scene页签中包含很多设置项,数值型的参数一般越大越好,但也会增大烘培时间和占用空间RealtimeGlobalIllumination实时全局照明RealtimeEnvironmentLighting实时环境照明,实时更新环境光IndirectResolution间接分辨率,指定实时光照贴图使用的每
目录一、项目更改二、使用YooAsset热更1.资源配置2.资源构建3.将两个文件夹下的资源上传CDN服务器4.修改代码5.运行效果 本文记录利用YooAsset+HybridCLR来进行资源和dll的更新。YooAsset使用的是新版V2.1.0。相比于旧版,dll(原生文件)和资源要建两个package分别来进行build。dllpackage采用RawFileBuildPipeline,资源采用BuildinBuildPipeline。 本文将文章中的Demo以StreamingAsset目录加载AB包和dll改为使用YooAsset打包资源,从host来下载。一、项目更改新
sqlite和access类似是文件形式的数据库,不需要安装任何服务,可以存储数据,使用起来还是挺方便的。首先需要安装DLL需要的DLL我们找到下面两个文件放入Plugins目录Mono.Data.Sqlite.dllSystem.Data.dllDLL文件位于Unity的安装目录下的2022.3.14f1c1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit-win32另外还需要sqlite3.dll在官网下载sqlite3.dll也放入Plugins使用Sqlite网上有网友写的SQLiteHelper,方便数据库操作,这里直接Copy了。usi
在动画与动画的切换过程中,常因为两个动画之间的差距过大,而显得动画的切换很不自然。这时候就需要动画混合树BlendTree这个功能。使用混合树可以将多个动画混合在一起,例如在处理角色的移动中,走动画与跑动画切换的时候,在走动画与跑动画中生成多个过渡用的插值动画以达到平滑得切换的功能。现在混合树有5种类型,可以在右侧展开BlendType看到。分别为:1D:1D混合只有一个参数,比如如果使用混合树去制作人物从站立到走到跑的混合,就比较适合使用1D混合。右键点击混合树根节点,点击AddMotion添加结点,或者直接在右侧菜单点击加号来添加动画。2DSimpleDirectional:最好在运动表示
目录第一人称角色控制😴1、准备工作📺2、鼠标控制摄像机视角🎮3、角色控制😃4.杂谈 第一人称角色控制专栏Unity之动画和角色控制-CSDN博客的这一篇也有讲到角色控制器,是第三人称视角的,以小编目前掌握的Unity知识来看第一人称和第三人称只不过是摄像机摆放的位置不同而已。最开始学Unity的时候小编最想实现的就是角色控制这一功能,通过近一步学习鼠标晃动就可以实现视角的旋转,也可以通过跳跃跳到石头上去,我们一起来看。下面我们来实现这一实例。1、准备工作先把我们的场景导入进来:Low-PolySimpleNaturePack,资源商店免费的资源。然后打开下图框中的文件就是我们要用到的场景了。
前言在学习凉鞋老师的课程《QFramework系统设计:通用背包系统》第四章时,笔者使用了Odin插件,对Item和ItemDatabase的SO文件进行了一些优化,使物品页面更加紧凑、更易拓展。核心逻辑和功能没有改动,整体代码量减少了,并且增加了一个复制ItemConfig的小功能。需要注意:在ItemConfigGroup的列表中中删除ItemConfig时,应该点红色的X按钮,不要点最右侧的叉号,不然关联的ItemConfigSO文件不会被同时删除;QFramework带有的自定义属性功能可能会和Odin冲突,建议只使用其中一种;为了和原教程区分,下文将使用ItemConfig和Item
开发案例参考 07-游乐设备选择场景搭建_哔哩哔哩_bilibili导入之后代码报错Assets/SteamVR/Editor/SteamVR_Settings.cs(135,49):errorCS0117:`UnityEditorInternal.VR.VREditor'doesnotcontainadefinitionfor`GetVREnabledDevices'解决方法打开SteamVR_Settings脚本,修改代码135行```//vardevices=UnityEditorInternal.VR.VREditor.GetVREnabledDevices(BuildTargetGr