Day 19 | FPS灭火AR游戏开发Part4 - 喷水、灭火

今天要来实作灭火的行为,包含了水柱的喷射以及火焰的熄灭,那就继续看下去吧!

目录
为火焰添加碰撞器
建立灭火控制器
水柱随相机移动
喷出水柱
灭火,当水柱碰撞到火焰

为火焰添加碰撞器

火焰添加Box Collider,让火焰可以与水粒子碰撞。

建立灭火控制器

之前创建的水粒子系统新增script:

  • 宣告ParticleSystem,将ps元件拖曳进去
  • 宣告物件变数将AR Camera拖曳进去。
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元件,新增:

  • Pointer Down(被按下时):呼叫喷水函式Spout()。
  • Pointer Up(被释放时):呼叫停止喷水函式Stopspout();

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

>>:  虹语岚访仲夏夜-19(专业的小四篇)

最终章:Todo List实作

前面提到了物件、阵列、DOM元素的选取、事件监听,以及最後的localStorage。这些足够我们...

[求救]该如何在server端控制client端的印表机进行列印

如题想请问各位大大如何在使用网站时控制client端的预设印表机进行列印 使用的架构是 C# .ne...

DAY28 - [React] useContext 概念篇

今日文章目录 前言 参考资料 前言 在 Day25-[React] props 中我们练习用pro...

[Day26] 建立购物车系统 - 9

本篇同步发文在个人Blog: 一袋.NET要扛几楼?打造容器化的ASP.NET Core网站!系列文...

【从实作学习ASP.NET Core】Day12 | 後台 | 资料筛选与分页

前面我们已经完成了 Create 和 Details , 今天就来实作 List 页面 List 页...