今天要来实作灭火的行为,包含了水柱的喷射以及火焰的熄灭,那就继续看下去吧!
目录
为火焰添加碰撞器
建立灭火控制器
水柱随相机移动
喷出水柱
灭火,当水柱碰撞到火焰
火焰添加Box Collider,让火焰可以与水粒子碰撞。
之前创建的水粒子系统新增script:
public ParticleSystem ps;
public GameObject ARCamera;
随相机位置移动的程序,放在Update当中,确保随时喷射水柱时都在镜头前方。
void Update()
{
transform.position = new Vector3(ARCamera.transform.position.x, transform.position.y-0.14f, ARCamera.transform.position.z);
transform.rotation = Quaternion.Euler(new Vector3(transform.eulerAngles.x-34.5f, ARCamera.transform.eulerAngles.y, ARCamera.transform.eulerAngles.z));
}
在场景添加控制喷水的Button(UI物件),添加Event Trigger元件,新增:
public void Spout() { ps.Play(true); }
public void Stopspout() { ps.Stop(true); }
之前在水的PS勾选collision,为水粒子挂上碰撞体後,使用OnParticleCollision,检测是否有碰撞的行为发生。如果这个函式被呼叫了,就代表粒子有碰撞到物件,那就一定是产生出来的火焰,直接将火熄灭关闭。
private void OnParticleCollision(GameObject fire)
{
fire.SetActive(false);
}
(这边因为确定可能碰撞到的物体只有火焰,所以就比较偷懒没有使用Layer检查是否为火焰,但如果是比较复杂的专案,不可以直接预设撞击到的一定是目标物喔!)
再来只要依照自己游戏企划的设定,增加在多少时间内熄灭多少火焰的机制,这个小游戏就完成罗。
以上就是今天的灭火行为的程序撰写,那FPS灭火系列就结束罗!下一篇文章会是另外的小游戏,那就明天见罗~
<<: [13th][Day25] kubernetes & docker
前面提到了物件、阵列、DOM元素的选取、事件监听,以及最後的localStorage。这些足够我们...
如题想请问各位大大如何在使用网站时控制client端的预设印表机进行列印 使用的架构是 C# .ne...
今日文章目录 前言 参考资料 前言 在 Day25-[React] props 中我们练习用pro...
本篇同步发文在个人Blog: 一袋.NET要扛几楼?打造容器化的ASP.NET Core网站!系列文...
前面我们已经完成了 Create 和 Details , 今天就来实作 List 页面 List 页...