26 October 2015

Collision Unity

Collision atau benturan. Sudah ngerti dong pastinya apa yang disebut benturan di unity?

Contohnya gini, kalian mau buat karakter kalian akan mati ketika terkena karakter musuh. Udah gini aja simple kan?

Collision yang mau saya bahas collision2d.

Pertama harus ada 2 karakter yang akan di tabrakan. Sebut saja Mawar dan Melati.


Ceritanya mawar dan melati adalah musuh bebuyutan. Mereka tidak akan bisa tinggal diam jika melihat satu sama lain. Mereka akan saling menghancurkan.

Bisa kalian rasakan sendiri bagaimana aura keduanya jika bertemu.

Masing-masing dari mereka memiliki komponen Box Collider 2D dan Rigidbody 2D. Kenapa 2D? Karena mereka bukan 3D.

Biar enak di bawahna kasih tanah dong biar mereka bisa berpijak.



Kalau kalian mainkan maka mereka akan jatuh dan berpijak di tanah. (Harapannya)

Oppsss realitanya pasti mereka akan jatuh menembus sang tanah bukan?wkkwkw
Sori lupa, supaya mereka bisa berpijak di tanah berarti sang tanah harus punya fisik dong.
Tambahkan komponen yang sama yaitu Box Collider 2D dan Rigidbody 2D pada tanah.



Nah sekarang mawar dan melati semuanya indah berpijak di tanah.
Sekarang pasang taruhan! Kalian berpihak kesiapa? Mawar? Melati?

using UnityEngine;

using System.Collections;

public class MovePlayer : MonoBehaviour {

    public float speed;  
    public float darah = 100f;

 void Start () {
        
 }
 
 
 void Update () {

        float h = Input.GetAxis("Horizontal") * speed;
        transform.Translate(Vector2.right * h * Time.deltaTime);

}
}

Script diatas ini supaya karakter bisa berjalan mendekati satu sama lain. Tapi ingat ini script C# dan hanya di tambahkan ke salah satu karakter.

Oke saya pegang melati yang menang (yang ijo). Jadi script yang diatas adalah untuk melati supaya bisa jalan mendekati mawar.

Lalu bagaimana cara melati menghancurkan mawar? Tambahkan fungsi ini di setelah fungsi Update

void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject)

        {
            Destroy(other.gameObject);
        }
    }

Nah baiklah kalau di mainkan dan tekan tombol panah kanan maka melati akan jalan ke arah mawar, saat diantara mereka terjadi Collision maka secara ajaib maka mawar akan hilang untuk selamanya.(Harapannya).

Realita? Saat dimainkan maka bukan hanya mawar yang akan hilang jika tersentuh oleh melati tapi juga tanah yang mereka pijak. u know y? coz pada script hancurkan di tuliskan other.gameObject yang berarti semua gameObject yang memiliki Rigidbody 2D dan Collider 2D akan hancur saat tersentuh oleh melati.

Kini melati dan mawar tidak bisa saling menghancurkan karena mereka sibuk menyelamatkan diri masing-masing!!!

Maka untuk mengatasi itu perlu ditambahkan tag / name. Fungsinya untuk mendeteksi object yang lebih spesifik. Disini saya menggunakan name (berarti nama object yang akan hancur jika terkena melati).

void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.name = "mawar")

        {
            Destroy(other.gameObject);
        }
    }
Oke jadi melati sudah tau bahwa hanya mawar lah musuh bebuyutannya sehingga dia harus menghancurkannya dan sang tanah hidup sambil di pijak oleh mawar.

Cerita ini hanya fiktif belaka, jika ada kesamaan tokoh, tempat dan kejadian mohon dimaklumi. Pengarang baru bangun!!