【Unity学习笔记】Unity's Game Prototyping Series(3)
三、摄影、动画与特效
1. Cinemachine(https://unity.com/cn/unity/features/editor/art-and-design/cinemachine)
利用Cinemachine,我们可以使用摄像机创造复杂行为而不必撰写任何代码。Cinemachine包含许多模块,将其组合起来,可以创作影片或者完全自动化的游戏内摄像系统,等等。
Cinemachine不创造新的Unity摄像机,只是用Cinemachine Brain管理虚拟摄像机。
(1)新建Cinemachine Brain
Main Camera>Add Component>Cinemachin>Chinemachine Brain
(2)新建Cinemachine Virtual Camera
Menu>Cinemachine>Create Virtual Camera>将游戏物体拖入Follow和LookAt参数
(3)选择游戏视角并调整盲区(Dead Zone)
调整镜头(Lens)参数和阻尼(Damping)参数。阻尼参数决定了镜头跟踪目标的紧密程度。
2. 移动式摄影车(Dolly Cart)和轨道(Track)
(1)新建Cinemachine Brain
Main Camera>Add Component>Cinemachin>Chinemachine Brain
(2)新建Cinemachine Virtual Camera
Menu>Cinemachine>Create Virtual Camera>将游戏物体拖入Follow和LookAt参数
(3)选择游戏视角并调整盲区(Dead Zone)
(4)添加移动式摄影车和轨道
Cinemachin>Create Dolly Track and Cart>将虚拟摄像机拖入Dolly Cart的Follow参数
设置Dolly Cart的位置、速度
Dolly Track>添加Waypoints
根据需要勾选Loop
调整平滑度(Resolution)
注意:摄像机和小车的位置最好与起始节点相同
3. ShaderGraph
【注意】必须选用Lightweight/universal render pipeline模式新建工程文件,如果使用MMD插件转换的模型,模型材质必须选择Universal Render Pipeline/Lit模式
(1)新建Shader Graph文件夹>新建Shader-Unlit Graph>打开Shader Graph窗口(也可建立PRB Graph,注意这里检查打开窗口后是否出现相应的master)
(2)在工作区中按鼠标右键(或空格),选择Create Node>建立Texture 2D Asset和Sample Texture 2D>在Texture 2D Asset中导入材质>单击Texture 2D Asset的Out(T)并与Sample Texture 2D Texture(T)相连
(3)复制粘贴已建立的Texture 2D Asset和Sample Texture 2D>在第二个Texture 2D Asset中导入第二个材质
(4)新建Tiling and Offset节点>将TaO的Out与第一个Sample Texture 2D的UV连接>这里可以选择调整TaO的Input节点的X值和Y值(分割)
(5)新建Divide节点>将第一个Sample Texture 2D的A(1)节点与Divide的input连接>将Divide节点B(1)的X输入改为20
(6)新建Blend节点>将Divide节点的Out(1)与第一个Blend节点的Base(1)连接>将第二个Sample Texture 2D的A(1)与第二个Blend节点的Base(1)连接
(7)新建Color节点>调整颜色并将模式改为HDR>创建新的Blend节点>将第一个Sample Texture 2D的RGBA(4)与新建Blend的Base(4)连接>将Color的Out(4)与Blend的Base(4)连接>将Blend节点的模式改为Darken>将彩色Blend的Out(4)与Unlit Master的Color(3)连接>将第二个Blend的Out(4)与Unlit Master的Alpha(1)连接
(8)点击Unlit Master右上的齿轮,将Surface设为Transparent>在Shader Graph窗口左上点击保存资源
使用时,在材质检查器中选择新制作的Shader即可。

4. 动画绑骨(Animation)
(1)安装Animation Rigging资源包(此资源包为试行版,需打开preview选项)
(2)导入模型,做好控制器。
(3)在模型上添加Rig Builder组件
(4)在模型上创建新的子对象,并添加Rig组件。
(5)将Rig拖入模型Rig Builder组件中的Rig Layers列表。
(6)添加Bone Renderer组件
(7)菜单栏Animation Rigging>Bone Renderer Setup(此时屏幕中应出现骨骼)
(8)点击屏幕上Animation Rigging的“+”,会打开下拉菜单,这时可以设置Rig Effector
(9)Rig Constraints:聚合骨骼并实时产生预定动作的工具。
(10)菜单>Restore Bind Pose>在模型下建立子游戏物体CharacterRig>在CharacterRig下建立子游戏物体Right Arm IK<在Right Arm IK下建立两个子游戏物体RH IK Target和RH IK Hint>在模型下添加Rig Builer组件>在CharacterRig上增加Rig组件>选择Right Arm IK并添加Two Bone IK Constraint组件
(11)选择RH IK Target并添加Box Effector,调整参数和大小>同时选择Box Effector和层级窗口中的右手,点击菜单栏中的Animation Rigging并选择Align Transform>选择RH IK并添加Ball Effector>同时选择RH IK Hint和右肘骨骼,点击Animation Rigging并选择Align Transform>移动Ball Effector使其稍微远离肘部。
(12)选择RightArm IK并将相应骨骼(右上臂、右下臂、右手)拖入相应框内>将RH IK Target和RH IK Hint拖入Source Objects的相应框内>选择模型并将Character Rig加入Rig Layers列表>测试
5. 粒子系统
(1)一个简单的控制脚本
ParticleSystem part = GetComponent<ParticleSystem>();
var part = GetComponent<ParticleSystem>();
part.Play();
Destroy(gameObject, part.duration);
(2)烟花范例
https://styly.cc/tips/unity_fireworks01/
注意:教程叙述得不是很清楚,烟花由三个粒子系统组成:升起的烟花弹、烟花弹尾迹和在半空绽放的主烟花,三个部分按条件绑定,烟花弹和烟花弹尾迹同生同灭,主烟花在烟花弹消失后启动
