Tutorial Unity - Particle Collision - IMedia9 - Creative Networks

Breaking

Tuesday 22 July 2014

Tutorial Unity - Particle Collision

Halo sobat Unity di mana pun anda berada. Jumpa lagi dengan saya Rickman Roedavan, si tukang jualan kancil, hehehe. Kangen nggak sama gue sob? *yang bilang nggak kangen nggak pren!*. Kemarin gue habis liat2 forum Unity dan ada sebuah pertanyaan menarik dari agan mrdeday yang nanyain soal Interaksi Object. Maksudnya collision, tapi yang ini beda gan. Collisionnya masalah particle, dan seinget gue di buku gue nanti (yang Insya Allah bakalan terbit pasca lebaran), gue belum sempat bahas gituan. Jadi ya sudah, gue coba bahas di blog aja kali yee. 

Oke, langkah pertama adalah agan bikin deh sebuah project baru, scene baru, terrain baru yang lengkap dengan langit, matahari, dan si Constructor. Buat agan yang nggak ngerti cara bikin itu semua, baca dulu tutorial gue yang ini: http://blogtutorial-unity.blogspot.com/2014/06/tutorial-unity-game-lari-sampe-capek.html. Habis itu agan impor tuh package Particle dan tambahin Waterfall Prefab. Ini penting gan, karena deteksi tabrakan particle itu banyak banget, dan nggak kayak tabrakan mesh biasa, agan mesti TURUNIN jumlah maximal particle atau Unity agan bakalan hang. CIUS! Nih, gue coba atur-atur posisi Waterfall dan propertiesnya kayak gini. Agan contek aja dah.

Catatan: Inget ya! Si prefab waterfall nya mesti jadi CHILD nya si prefab Constructor. Jadi ente mesti drag dulu tuh prefab waterfall ke prefab Constructor supaya hasilnya kayak di gambar. *rada menjorok gitu kan tulisan prefab waterfall nya? Nah, itu namanya jadi child*
Kalao udah oke, agan mattin dulu Emitnya. Dengan begitu, si waterfall nggak langsung muncul pas Run, tapi kita aktipin nanti via script. Ceritanya gue lagi bikin kisah Constructer The Last Water Bender, wkwkwkwk.

Habis gitu, nah ini yang penting gan, particle itu setahu gue nggak punya default message tabrakan. Jadi lo mesti tambahin itu. Klik Waterfall Prefab, terus tambahin komponen World Particle Collider, caranya klik menu Component -> Effects -> Legacy Particles -> World Particle Collider.

Kalo udah muncul, agan centang deh Send Collision Message. Ini bakalan jadi pondasi awal deteksi kalao sebuah particle NABRAK benda lain.

Selanjutnya agan tambahin deh apinya, pake Flame Prefab juga boleh 

 Gue nggak tahu persisnya gimana untuk nangani kalao apinya banyak, atau prefabnya banyak, tapi gue sih biasanya pake Tag untuk setiap prefab. Gue tandain gitu. Untuk satu jenis prefab ini gue kasih tanda Tag API. Ini penting buat deteksi nanti di skripnya.
 Agan udah tahu cara bikin Tag kan? Klik aja panah deket combo Tag tuh dan pilih Add Tag. Ketik aja kayak gini.
Langkah selanjutnya adalah bikin Sphere Collider buat di pasang di Flame Prefab. Kenapa? Karena interaksi object, atau TABRAKAN itu hanya bisa terjadi antara Collider ke Collider. Di Waterfall kan udah kita pasang World Particle Collider, nah di targetna kita pasang juga Sphere Collider. Biar sepasang gitu gan. 

Nanti bentuknya kayak gini dah. Agan atur-atur aja gedenya si collider. 


Langkah selanjutnya agan bikin deh skrip baru. Gue bikinnya pake C# dan nama Skripnya WaterBender.cs. Isi skripnya kayak gini doang: 

1:  using UnityEngine;  
2:  using System.Collections;  
3:  public class WaterBender : MonoBehaviour {  
4:   // Use this for initialization  
5:   void Start () {  
6:   }  
7:   // Update is called once per frame  
8:   void Update () {  
9:   if (Input.GetKeyDown("x")){  
10:    if (!particleEmitter.emit) particleEmitter.emit = true;  
11:   }  
12:   if (Input.GetKeyUp("x")){  
13:    particleEmitter.emit = false;  
14:   }  
15:   }  
16:   void OnParticleCollision (GameObject otherObject) {  
17:   if (otherObject.tag == "Api"){  
18:    otherObject.transform.Find("InnerCore").particleEmitter.emit = false;  
19:    otherObject.transform.Find("OuterCore").particleEmitter.emit = false;  
20:    otherObject.transform.Find("Smoke").particleEmitter.emit = false;  
21:    otherObject.transform.Find("Lightsource").light.enabled = false;  
22:   }  
23:   }  
24:  }  

Habis itu pasang deh skripnya ke Waterfall prefab. Udah gitu doang.


Agan tinggal pencet tombol X di keyboard dan SIM SALA BIM, kalo cipratan airnya kena, bakalan langsung padam deh itu apinya, hehehe.

Oke, skrip yang gue kasih ini sederhana banget. Dalam artian, gue langsung matiin emiternya si Flame Prefab, tapi kalao agan pengin lebih smooth, agak ribet gan. Agan mesti ngurangi Max Emission di setiap GameObject Flame secara bertahap. Bikin sendiri aja kalo yang itu mah ya? Asli ribet. Males gue bikinnya, hahaha. Sekian dulu tutorial dari saya. Kalao agan suka dengan tutorial ini, jangan lupa LIKE dong Fan Page Kiky Si Kancil dan beli buku Unity gue. Kiky Si Kancil? Gokil! Gokil! Gokil!


No comments:

Post a Comment