# Day 19 | FPS滅火AR遊戲開發Part4 - 噴水、滅火 ###### tags: `Unity` `AR手遊` > **目錄** > 為火焰添加碰撞器 > 建立滅火控制器 > 水柱隨相機移動 > 噴出水柱 > 滅火,當水柱碰撞到火焰 今天要來實作滅火的行為,包含了水柱的噴射以及火焰的熄滅,那就繼續看下去吧! ## 為火焰添加碰撞器 火焰添加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滅火系列就結束囉!下一篇文章會是另外的小遊戲,那就明天見囉~
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up