Showing posts with label 2D. Show all posts
Showing posts with label 2D. Show all posts

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!!

22 October 2015

Play Animation Unity

Saya sudah punya 3 Animasi tapi bermain sendiri-sendiri. Saya akan coba membuat animasi ini akan bergerak saat tombol tertentu ditekan.

Di tab Hierarchy sudah ada Animator Controller yaitu lucas1_0. Klik lucas1_0 dan lihat di tab Inspector. Akan ada komponen Transform, Sprite Renderer dan Animator. 

Tambakan juga komponen Animation. 


Pada komponen Animation, drag atau browse Animation Clip Idle yang sebelumnya sudah dibuat. Dibawah Animation ada Animations. Karena ada 3 animation clip maka ganti nilai 0 menjadi 3 dan isi masing-masing element dengan animation clip yang sudah dibuat sebelumnya.


Semua komponen telah ditambahkan sekarang waktunya koding. Saya menggunakan C# dengan class Move.
using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour {

    public Animator anim;

 // Use this for initialization
 void Start () {
        anim = GetComponent<Animator>();
 }
 
 // Update is called once per frame
 void Update () {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            anim.Play("Run");
        }
        else if (Input.GetKey(KeyCode.UpArrow))
        {
            anim.Play("Jump");
        }
        else
        {
            anim.Play("Idle");
        }
 }
}

Nah ini cara simple untuk menjalankan animasi 2D saat tombol tertentu ditekan. Ingat ini cara sederhana dan tentu banyak bug-nya. :v

Membuat Animasi 2D Unity

Membuat animasi 2D berarti menggabungkan setiap potongan-potongan adegan yang sudah di slice di artikel sebelumnya.

Drag potongan pertama ke tab Hierarchy yang akan menjadi Animator. Sambil buka tab Animation klik sprite lucas1_0 yang di Hierarchy, maka di tab Animation akan ada tombol Create. Tekan tombol Create untuk membuat animasi.


Animasi pertama saya akan membuat Idle (diam). Klasifikasi potongan adegan ada di artikel sebelumnya. Multi select potongan adegan Idle lalu drag ke tab Animation.


Kalau saya mainkan gerakkannya akan terlalu cepat, untuk membuatnya agar bergerak lebih smooth kurangi nilai Samples. Semakin besar maka semakan cepat gerakkannya.


Animasi Idle sudah jadi. Sekarang buat Animasi Run. Untuk menambahkan klik nama Animasi Idle  -> pilih Create New Clip.


Caranya sama seperti membuat animasi Idle. Multi select potongan adegan mana saja yang menjadi bagian untuk Animasi Run lalu drag ke tab Animation.


Begitu juga dengan Jump. Ulangi langkah membuat Animasi Run.

Oke sekarang saya sudah punya 3 Animasi dengan 1 Animator.

18 October 2015

Import Sprite Unity

Saya mau coba buat game sederhana, gerak-gerakin sprite 2D.

Ini sprite Lucas yang saya pake. 

Sprite ini hanya berupa sebuah gambar, jadi harus di pisah-pisah dulu setiap adegan dalam sprite. Klik sprite, pada menu inspector ubah sprite mode dari single ke multiple, 


Klik sprite editor. Muncul window sprite editor seperti ini.


Klik slice dan akan ada muncul menu seperti ini. 


Karna sprite yang gue pake jarak setiap adegannya gak ada yang terlalu dekat jadi bisa langsung klik Slice dan akan terpotong otomatis menjadi beberapa bagian. Kalau ada adegan yang jaraknya terlalu dekat jangan pakai Type Automatic tapi bisa pakai Grid, karna bisa jadi dua adegan akan tergabung menjadi satu adegan. 
Kalau kurang ngerti penjelasannya silahkan langsung praktek sendiri. Gak lengkap teori tanpa praktek.


Sekarang kita punya potongan-potongan dari setiap frame. Ada adegan Idle (diam), Run (Lari), Jump (Lompat).
  • Idle dari potongan lucas1_0 sampai lucas1_3
  • Run dari potongan lucas1_4 sampai lucas1_11 
  • Jump dari potongan lucas1_12 sampai lucas1_20
Selanjutnya saya akan membuat animasi dari potongan-potongan adegan diatas.