摄像机

别问,问就是无脑cinemachine(233,我只会之这个)

点击 window ➡package manager 左上角找到Unity Registry 中间直接找到这个插件下载即可

下载完之后我们在Hierachy中右键创建就可以找到这个cinemachine。

unity 相机画面不刷新 unity相机控制_生命周期


之后在Follow中直接跟随你需要跟随的角色即可

摄像机边界

在设置完之后我们运行会发现,我们很多虚空也会进入视角。

1.所以我们为这个CM vcm1(就是用cinemachine创建的相机)加入组件Cinemachine Confiner2D

2.创建一个空的GameObject为他加上组件polygon Collider 2D,然后把绿色框框拉到和需要显示的地图一样就行

3.直接将这个边界拉进去就行

unity 相机画面不刷新 unity相机控制_生命周期_02

粒子特效

1.创建 右键Hierachy➡Effects ➡particle System
关于每个按键怎么用emm,底下给到了官方链接

这里讲述一下简单的爆炸特效

unity 相机画面不刷新 unity相机控制_ci_03


最初始的素材

unity 相机画面不刷新 unity相机控制_游戏引擎_04


1.因为击中特效只需要一瞬间,且发射器应该为一个圆形

2.所以爆发粒子的时间应该是0

3.同时不需要重复1.那么第一件事我们先替换掉粒子,可见我们一开始创建出来的粒子时白色的而不是我们所要的素材,

unity 相机画面不刷新 unity相机控制_unity_05


所以找到 Texture 这个模块,将mode改为精灵替换素材即可

2.设置形状找到shape模块

unity 相机画面不刷新 unity相机控制_ci_06


将shape改为circle圆形,如果是3d就是hemisphere。

Radius是圆的半径。

Radius Thickness:发射粒子的体积比例。值为 0 表示从圆形的边缘发射粒子。值为 1 表示从整个面积发射粒子。介于两者之间的值将使用面积的一定比例。

Arc就是角度因为需要一个圆就那是360事实上我在做这里花了非常多时间,一位内我将scale更改了,导致圆变成了一个垂直于界面的圆,一般来说2d就是xy都是1就行

3.粒子爆发时间

unity 相机画面不刷新 unity相机控制_unity 相机画面不刷新_07


找到Emission将Rate over Time改为0,即一瞬间爆发即可到这里为止,我们这个特效就算是做好了,但是有一点需要提的是,如果我们的特效是放在一个移动物体的身上且需要跟随物体移动

unity 相机画面不刷新 unity相机控制_游戏引擎_08


我们需要将Simulation Space这里改成World。

unity 相机画面不刷新 unity相机控制_生命周期_09


效果大概是这样,机器人向右边走,烟雾会有真实效果。

代码控制特效

这里用的例子是上面这个机器人的烟雾效果,大体应该都差不多

1.公开粒子特效属性

public ParticleSystem smoke;

2.将做好的特效拉进我们的公开属性中

unity 相机画面不刷新 unity相机控制_unity 相机画面不刷新_10


(这里其实有一个bug来着,就是我们如果先将这个特效作为我们机器人的子对象,那么这个特效只能从我们子对象下面拉进去,而不能从我们的预制件里拉进去,如果是从其他地方拉进去的话,那么等会代码要进行更改)

3.在函数中调用

//二选一
 smoke.Stop();
 //
 Destroy(smoke.gameObject);

这两个函数的差别如果没有报错的话,那么第一个是让粒子生命周期结束再消失,第二个是直接消失,无论粒子的生命周期还有多久

unity 相机画面不刷新 unity相机控制_生命周期_11


这里的Duration就是生命周期