unity2d Tilemap Collider优化
如图:由于Tilemap Collider会给每一个瓦片都添加碰撞核,这导致了人物在移动时会依次和每一个碰撞核进行碰撞,从而造成卡在缝隙里等的问题。
我们现在想把这些单独的碰撞核合并成一个整体
就是勾选这里
然后这里会提示:
所以按照他的要求添加一个复合的
添加上以后就可以观察到已经变为整体了
但是这样有一个问题
就是 如果我们绘制新的瓦片,它还是会合并到这个碰撞体中
还有个问题,就是它会自动添加刚体,并且还设置了重力。
这导致了游戏一开始后瓦片地图会掉下去。
解决方式:
设置为静止。
(我觉得 之所以不把重力直接改为0,是因为虽然不往下掉了,但是被人物一撞还是会被撞飞)
也可以直接在这里勾选:
人物:
碰撞核改为连续检测:
另一个视频里,他又补充了个 把【Body Type】改为Kinematic
这里插值从None改为Interpolate
意思是人物在撞到墙上时会稍微陷进去一点,这样会影响操作手感。
卡墙:
如果一直按着方向键不动,人物就会粘在墙上,甚至还可能判断为接触了地面,还能跳跃。
解决方法就是搞个材质,摩擦力变为0
蹲下:
新逻辑:直接让碰撞核大小减半
注意这里的Offset,意思是相对于Transform的偏移量?
注意这里:
要声明具体的Box,如果只是生命Collider,是没有下面的属性的。
跳跃:
长按空格实现跳的更高、蹲下时起跳跳的更高。
up先把重力常量从9.8变味了-50.(为啥?我没搞懂)
参数:
普通跳跃的力,跳跃加成的力,支持长按的时间,下蹲时额外跳跃加成。最后一个说是跟上面配合的。
(这个时间 up说稍后会解释为什么这么小)
方法:
跳、长按跳、蹲。(这个长按跳肯定还得和时间变量来配合的)
长按跳代码:
逻辑:我有点理解不了,先不要详细看了,到时候自己写吧,就是用时间计时。
下蹲跳,没什么特别的,就不截图了。不过从游戏设计上,下蹲跳应该比长按跳 跳的更高一些才合理。
悬挂:
头部这里设置三条射线,拥有长度。如上图,红色的这两条检测到物体,而绿色的那一条没有检测到物体时,按键即可悬挂。悬挂,up的操作就是把人物设为static。
但是有个问题就是,上图可以再往上挪一点,只要竖着的那个线是红色的就能悬挂,这样悬挂的位置就看起来怪怪的。up的解决方式用了Raycast.instance这个属性,可以获得离射线最近的碰撞体的距离。up就用横着的最高的那个射线来获取一下,然后把人物向下移动就可以了。
还有个问题,就是悬挂上以后人物可以左右翻转。up是直接在代码里用个布尔让玩家没法操控了。
(这方法不太好吧...)
然后为了在悬挂状态还能进行特定操作,up又写了一系列代码,就不参考了。
这里有个新东西介绍一下:
用这个可以把static的角色。
新的动画参数设置
以前都是直接用Animator里设置的字符串来设置的,还有一种写法就是先转换为哈希的int,然后设置。
这是因为移动端直接传字符好像可能会有某些bug
Blend Tree
它的作用就是通过某一个变量的值的大小,来控制播放不同的动画
这里可以调整数值的大小,默认会按照从小到大排序
根据Layer判断碰撞
之前都是根据tag判断的,现在介绍一个新的,根据layer来判断
代码在地图生成对象
新插件:PostProcessing
用来提升视觉效果的
给摄像机添加layer
然后这里需要给组件添加一个layer
但是不要添加everything,因为不支持
我们新创建一个layer,起名为:
搞个空物体,改名,设置为刚才那个层
然后回到刚才的相机的组件
这里是以打钩的形式来选的,所以先选nothing把所有的都取消了,再勾选我们需要的post processing。
现在Camera就可以看刚才那个空物体所承载的特效了
切换到空物体面板,坐标归零,然后勾选,让他可以可以影响游戏的整个全局。如果只想影响一部分,可以取消勾选,然后添加一个collider加到这里面。(up大概说了一下,回头要实验还得自己查一下)
这是优先级和特效:数字越大越在上层
new一个 然后给它加特效
这里面很复杂,具体需要可以看手册。这个只有英文手册
现在讲几个常用功能:
Bloom
如果要使用里面的参数的话需要主动勾选
第一个是泛光(模糊?),第二个是增幅(明亮?)
Color Grading:
调色相关
White Balance白平衡,用来调节色温的,就是冷暖,就是蓝色黄色
Saturation饱和度:灰色到色彩鲜明
Chromatic Aberration:畸变。就是喝醉了或中毒了后画面扭来扭去那个感觉
Spectral Lut:可以单独影响某一个颜色
Lens Distortion:镜头(或许可以用来做子弹时间的开启特效?)
Vignette:让画面四周出现阴影。
这里有一个注意点,如果想在手机上用,就把这个勾选上。如果一个东西没有这个选项,最好不要在移动平台上用,否则会非常卡顿。
相机震动
给Cinemachine 相机添加一个额外的组件Listener
角色碰撞宝珠后,相机震动。所以给宝珠添加一个Source
在这里给他添加一个shake,就是要相机如何来摇晃
up这边是直接拿的素材包里的做好的
我觉得这里其实自己new一个也行,就是自己调一下震动频率
可以在这里创建:(下面看不见的地方选择NoiseSettings)
然后给宝珠的这个组件再设置一下:
你希望哪个layer触碰它的时候发生震动?选择player
分别是:振动幅度、震动频率
震动幅度默认是1,如果设置超过100甚至会超出屏幕
震动频率越大,震动完成的速度越快。
碰撞Layer时
LayerMask类就是用来控制Layer相关的,Layer就是Tag右边的那个东西。
注意up这里是转成了int类型,然后再进行判断是否相等的。
(我查了一下用字符串来判断相等也可以,虽然估计会更耗费性能)
计时
音效控制 Audio Mixer
Window窗口下拉
这个是为了解决我们音效控制的类里 由于没有添加Audio Source,导致没办法调整各个声音的大小
长这样:
group就是音轨。上下拖拽右边这个大小就可以调整音量
现在我们只需要在代码中new Audio Source,然后调用某个方法把它输出到Audio Mixer上就可以调整了
手动操作的话如下图,我们代码就是复现这个过程。
和音源一一对应
给Source设置output
然后绑定一下(这玩意儿是哪来的,好像是mixer添加完以后自动就有?)
mixer还有一个功能,就是在游戏开始后,可以直接从这里调,会自动。
刚才只讲了用代码进行声音的开闭,没讲怎么调大小,大概就是:
从这里把它发送到代码里(老师没讲)
生成移动平台游戏
要注意填写这里
安卓的话还要填写这里
页:
[1]