Pertemuan 4 Roll a Ball (Part 3) - WordPress.comPertemuan 4 Roll a Ball (Part 3) Mata Kuliah Logika...
Transcript of Pertemuan 4 Roll a Ball (Part 3) - WordPress.comPertemuan 4 Roll a Ball (Part 3) Mata Kuliah Logika...
Pertemuan 4Roll a Ball (Part 3)
Mata Kuliah Logika GameProgram Studi Teknologi PermainanSekolah Tinggi Multi Media YogyakartaTri Anggraeni, S.Kom., M.Sc.
Video 5: 7.30 – 7.38
Alternatif posisi collectible objects
Memberi warna pada collectible object (cube)
• Duplicate Background di folder Materials.
• Rename jadi Pick Up.
• Ubah warnanya jadi kuning/sesuai keinginan.
• Drag material Pick Up ke prefab Pick up hingga semua cube berwarna kuning.
Klik
“Memakan” objek Pick Up ketika Player sphere menabrak cube
Perlu mendeteksi collision (tabrakan) antara Player sphere & Pick up cube.
Perlu memiliki collision trigger new behavior.Perlu mengetes collision untuk memastikan objek
yang diambil benar.
• Objek Player, Pick Up, Ground, & Wall memiliki yang menginformasikan tentang collision.
• Jika collision tidak dites untuk mengetahui object mana yang ditabrak, objek yang salah bisa terambil.
• Klik objek Player. Di Inspector: centang agar terlihat di Ground.
• Buka skrip PlayerController.
• Tampil di browser:
Klik
Klik
Perlu mendeteksi & mengetes collision• Gunakan:
Klik Bisa digunakan untuk mendeteksi kontak antara objek Player & Pick up tanpa benar2 membuat physical collisionCopy ke PlayerController
void OnTriggerEnter(Collider other) { Destroy(other.gameObject); }
Dipanggil Unity ketika objek Player menyentuh trigger colider.
void OnTriggerEnter(Collider other) {
Memberikan jalan untuk memperoleh suatu “lubang” di collider yang tersentuh.
Referensi ke trigger collider yang disentuh
Ketika menyentuh trigger collider objek lain: objek yang trigger collider-nya tersentuh itu di-destroy dengan Destroy(other.gameObject);
• Menghapus game objek dari scene.
• Di Game Roll a Ball ini: objek yang trigger collider-nya tersentuh tidak di-destroy tapi di-deactivate (seperti men-deactivate objek Player di pertemuan sebelumnya).
Destroy(other.gameObject);
• Ctrl ‘ sintaks gameObject jika ada koneksi internet atau ketikkan gameObject di kotak Search scripting di Unity Documentation yang telah tampil di browser tanpa koneksi internet. Tampil:
Klik
Cari variable/function:
CompareTagMembandingkan tag objek2 game ke suatu nilai
string.
Copy ke PlayerController
(Label obj gm)
SetActive
Untuk meng-activate/men-deactivate game object.
Kode programnya: gameObject.SetActive(false);
Copy ke PlayerController
Then in PlayerController script now
• Slide 9: Di Game Roll a Ball ini: Objek yang trigger collider-nya tersentuh tidak di-destroy dengan Destroy(other.gameObject); tapi di-deactivate.
• Maka: hapus Destroy(other.gameObject); dari skrip PlayerController.
• Karena skrip ini di objek Player, maka:if (other.gameObject.CompareTag("Player"))Harus diubah menjadi:if (other.gameObject.CompareTag("Pick Up"))
• Karena skrip ini di objek Player & ketika bersentuhan: cube di-deactivate, maka:gameObject.SetActive (false); harus ditambahi otheragar objek other (Pick Up) yang di-deactivate (hilang).
Jika other tidak ditambahkan: ketika Player menyentuh Pick Up, Player yang menghilang.
Cek Prefab Pick Up• Klik Prefab Pick Up. Cek tag-tag yang ada di
Inspector:
Klik
Belum ada tag Pick Up
Klik
Klik
Case sensitive Harus sama dengan yang di skrip
Klik Prefab Pick Up.
Klik
Klik
Klik Prefab Pick Up. Di Inspector: Box Collider: centang Is Trigger.
Save. Klik Play . Jalankan sphere Player & gerakkan ke cube.
Unity mengoptimalkan fisika
Unity mengoptimalkan performance dengan cara menghitung semua volume static collider di scene & menyimpannya.Static collider tidak bergerak.Ketika cube digerakkan, dirotasikan, atau diubah
ukurannya, Unity menghitung static collider take resources.
Agar tidak begitu: set collider menjadi dynamic sebelum digerakkan.
Caranya: tambahkan komponen Rigidbody.Collider yang punya Rigidbody disebut dynamic.Collider yang tidak punya Rigidbody disebut static.
Klik objek Pick Up. Di Inspector: klik Add Component, Rigidbody. Jalankan.Semua cube jatuh.Karena Use Gravity-nya tercentang.
Kalau Use Gravity-nya tidak dicentang: cube-nya sudah bisa tidak jatuh.
Cube sudah tidak merespon gravity tapi masih merespon Physics forces.
Physics forces: fisika yang bisa membuat gerakan berpindah tempat seperti bola menggelinding.
Cube tidak perlu Physics forces
Cara menghilangkan Physics forces:Tetap centang Use Gravity.Centang Is Kinematic-nya agar Rigidbody-nya
menjadi kinematic.(Kinematic Rigidbody tidak bereaksi pada forces (daya) & dapat dianimasikan & digerakkan dengan transform).
Bagus diterapkan pada semua objek dengan collider/ trigger.
Standard rigidbody move using Physics forces.Kinematic rigidbody move using transform.
Menyimpan jumlah cube yang ditangkap
• Di PlayerController: tambahkan: private int count;
• Di function Start: tambahkan: count = 0;
• “Mengambil cube” dilakukan di function OnTriggerEnter ketika other gameObject punya tag “Pick Up”.Tambahkan setelah baris SetActive (false);
count = count + 1;
Menampilkan jumlah cube yang ditangkap
• Di Hierarchy Unity: Klik
Rename jadi Count Text
Jika text tidak terlihat & ingin melihat:Klik2 pada Count Text, Ground, Gizmo, & geser2 scenesampai text terlihat
• Ubah warna text: di Inspector• Misal menjadi putih.• Ubah text menjadi:
Klik
Tekan keyboard Shift & Alt, klik top left
Cek di Play mode:
Klik
Di skrip PlayerController:
• Tambahkan: using UnityEngine.UI; public Text countText;
Untuk menyimpan reference ke UI text component di objek text.
• Set nilai awal countText di function Start:countText.text = "Count: " + count.ToString ();
• Update text tiap mengambil cube:Di function OnTriggerEnter, tambahkan:countText.text = "Count: " + count.ToString ();
Menuliskan baris program yang sama di 1 skrip: hindari
Solusi:• Buat function baru untuk menampung baris program
yang sama:
• Di function Start & OnTriggerEnter: panggil function SetCountText.
Di Unity: klik objek Player
• Drag objek Count Text ke
• Sehingga:
• Save. Klik Play . Jalankan sphere Player & gerakkan ke cube.
PR• Semua peserta kuliah:
1. Melanjutkan Game Roll a Ball berdasarkan video yang saya upload di sharedthings.wordpress.com.
2. Mencoba membuat Game Runner berdasarkan video yang saya upload di sharedthings.wordpress.com.
• Individu (gantian): Membuat tutorial tertulis dalam Bahasa Indonesia semacam ppt materi pertemuan ini. Boleh di ppt/ms word.- Robbi: Game Roll a Ball video terakhir & Game Runner (5
menit pertama)- Farhan, Arvinza: Game Runner (@10menit lanjutan)