Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object...

25
Pertemuan 3 Roll a Ball (Part 2) Program Studi Teknologi Permainan Sekolah Tinggi Multi Media Yogyakarta Tri Anggraeni, S.Kom., M.Sc. Video 7: 8.13 – 8.24

Transcript of Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object...

Page 1: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Pertemuan 3Roll a Ball (Part 2)

Program Studi Teknologi PermainanSekolah Tinggi Multi Media YogyakartaTri Anggraeni, S.Kom., M.Sc.

Video 7: 8.13 – 8.24

Page 2: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Pertemuan sebelumnya• Bola bergerak, kamera tidak bergerak.• Tidak banyak yang bisa dilihat dengan posisi kamera

saat ini.• Kamera perlu “diikat” dengan game object player.

Set posisi kamera:

Pindahkan kamera sehingga menjadi “child”/”anak” game object Player:

Page 3: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Ketika object Player digerakkan, kamera juga ikut bergerak. Third person game. Coba.

• Coba tampilkan keseluruhan seperti di samping & geser-geser/rotate posisi object Player.

• Reset posisi object Player.• Tekan mode Play Unity• Tekan keyboard tanda panah

sembarang. Bola keluar dari Plane/Ground.

Page 4: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• Ketika object Player menggelinding/berotasi & kamera menjadi child object Player, meskipun kamera tidak bergerak sama sekali & hanya berjarak relatif ke object Player, sudut pandang kamera menggelinding/berotasi bersama dengan object Player.

• Tidak seperti game third person biasanya, object Player berotasi pada semua sumbu xyz, tidak hanya 1 sumbu saja.

• Pada settingan third person, kamera yang diset sebagai “child” suatu game object akan selalu ada di posisi relatif ke parent-nya.

Posisi parent di game dimodifikasi/di-offset/diberi jarak dengan suatu nilai pada posisi child.

Page 5: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Pisahkan kamera dari object Player seperti sebelumnya: (klik kamera kemudian drag agak ke bawah)

• Offset value = selisih/jarak antara object Player & kamera.

• Hubungkan kamera dengan object Player dengan skrip, bukan sebagai child.

• Klik kamera, Add Component di Inspector, klik New Script, beri nama CameraController (ingat tidak boleh ada spasi di nama file), pastikan pilihan bahasa pemrogramannya C Sharp, klik Create & Add.

Video 7: 8.13 – 8.24

Page 6: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• Cara membuat skrip seperti ini akan membuat skrip terbuat di root/top level project/di luar folder Scripts:

• Drag skrip agar masuk ke folder Scripts.

Page 7: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

“Mengikat” kamera dengan game object PlayerBuka skrip. Ketikkan:using System.Collections;using UnityEngine;

public class CameraController : MonoBehaviour {public GameObject player;private Vector3 offset; // private karena bisa diset di skrip ini

// Use this for initializationvoid Start () {

// offset = posisi kamera saat ini - posisi playeroffset = transform.position - player.transform.position;

}

// Update is called once per framevoid LateUpdate () {

transform.position = player.transform.position + offset;}

} Save skrip

Page 8: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Function LateUpdate

• Ctrl ‘ sintaks LateUpdate jika ada koneksi internet atau ketikkan LateUpdate di kotak Search scripting di Unity Documentation yang telah tampil di browser tanpa koneksi internet. Tampil:

LateUpdate is called after all Update functions have been called. This is useful to order script execution. For example a follow camera should always be implemented in LateUpdate because it tracks objects that might have moved inside Update.

Page 9: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• Ketika menjalankan player dengan kontroller dari keyboard:Di setiap frame: sebelum mendisplay apa yang bisadilihat kamera: kamera bergerak ke posisi baru, luruske objek Player.

Update bukan tempat yang tepat untuk sintaks ini.Update memang menjalankan setiap frame, meng-

update setiap frame yang dapat mengetahui posisiPlayer & mengeset posisi kamera.

Tapi untuk mengikuti kamera, animasi prosedural, & mengumpulkan last-known stage, sebaiknyamenggunakan function LateUpdate.

Page 10: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

LateUpdate menjalankan setiap frame sama sepertiUpdate.

LateUpdate dijalankan setelah semua item telah diproses di function Update.

Sehingga ketika posisi kamera diset, player pasti telah bergerak untuk frame itu.

Page 11: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Buka Unity

• Klik Main Camera. Di bagian bawah Inspector tampak:

• Buat reference ke object Player dengan cara men-drag object Player ke sehingga menjadi:

• Save, tekan mode Play Unity , tekan keyboard a 1x. Kamera mengikuti bola tanpa berotasi

Page 12: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Menambahkan dinding di sekeliling Ground untuk mencegah objek Player jatuh ketika melebihi Ground

• Klik menu GameObject, submenu Create Empty, ubah namanya menjadi Walls. Klik menu , kemu-dian Reset.

Agar posisinya kembali asli di (0, 0, 0).

Page 13: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• Buat 1 objek cube (dari menu GameObject, 3D Object, Cube). Rename jadi West Wall. Klik Reset.

• Drag West Wall ke Walls agar menjadichildnya.

• Klik 2x pada West Wall. Ubahukurannya menjadi:

• Ubah posisinya menjadi:sehingga di Panel Game menjadi:

Page 14: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• Klik West Wall, klik menu Edit, Duplicate, atau Ctrl D.• Rename menjadi East Wall. Hilangkan tanda

minus di Position-nya sehingga menjadi:

• Klik East Wall, klik menu Edit, Duplicate, atau Ctrl D.• Rename menjadi North Wall. Bisa digeser-

geser/dirotasi-rotasi sampai menjadi:• Bisa juga dengan mengganti posisi & ukurannya

menjadi:

Page 15: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• Klik North Wall, klik menu Edit, Duplicate, atau Ctrl D.• Rename menjadi South Wall. Tambahkan tanda

minus di Position-nya sehingga menjadi:

• Save, tekan mode Play Unity . Tekan a/s/d/w/ panah kanan/kiri/atas/bawah. Bola tidak akan jatuh.

Page 16: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Membuat collectible object (objek yang bisa dikumpulkan)

• Buat Cube, rename menjadi Pick Up. Klik Reset.• Klik Pick Up 2x, ubah positionnya menjadi:

• Ukuran Pick Up menjadi lebih kecil daripada Player & Pick Up menjadi tidak terlihat.

• Klik Player, hilangkan centangannya di Inspector untuk meng-invisible-kannya (agar Pick Up terlihat).

Page 17: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Membuat cube menjadi lebih attraktifDengan menggerakkan/merotasikannya menggunakan skrip.• Klik Pick Up. Dari Inspector: klik Add Component,

New Script, beri nama Rotator, klik Create and Add.• Letakkan skrip Rotator

ke dalam folder Scripts.

• Buka skrip Rotator.

Page 18: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Skrip Rotator digunakan untuk memutar cube Pick Up

• Putaran cube Pick Up tidak menggunakan force/ kekuatan, sehingga menggunakan function Update, bukan FixedUpdate seperti PlayerController.

• Posisi, rotasi, & ukuran Pick Up saat ini:Perlu mengubah nilai ini di tiap frame.

• Untuk membuat cube Pick Up berputar, tidak perlu mengeset transform.rotation tapi merotasikan transform.

Page 19: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Ketik di skripusing System.Collections;using UnityEngine;

public class Rotator : MonoBehaviour {

// Update is called once per framevoid Update () {

transform}

} Ctrl ‘ sintaks transform jika ada koneksi internet atau ketikkan transform di kotak Search scripting di Unity Documentation yang telah tampil di browser tanpa koneksi internet. Tampil:

Page 20: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• 2 cara mempengaruhi Transform (perubahan bentuk): Rotate & Translate.

Klik

Translate: Moves the transform in the direction and distance of translation.

Rotate: Applies a rotation of z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis (in that order).

Klik

Page 21: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Transform.Rotate

2 override methods/functions:1. public

void Rotate(Vector3 eulerAngles, Space relativeTo= Space.Self);

2. public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);

Skrip Rotator menggunakan yang inivoid Update() { // Rotate the object around its local X axis at 1 degree per second transform.Rotate(Vector3.right * Time.deltaTime);

// ...also rotate around the World's Y axis transform.Rotate(Vector3.up * Time.deltaTime, Space.World); }

Klik

Page 22: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Time.deltaTime

void Update () {transform.Rotate (new Vector3 (15, 30, 45) *Time.deltaTime);

}

Ketik dalam 1 baris

Tambahkan di skrip

public static float deltaTime;

The time in seconds it took to complete the last frame.

Simpan, buka Unity, klik Play mode Cube Pick Up bputar.

Page 23: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Buat cube Pick Up menjadi Prefab

• Prefab: aset yang berisi template/blueprint game object, dibuat dari game object yang sudah ada.

• Bisa dipakai di scene manapun di dalam project.• Dengan mem-prefab objek Pick Up, perubahan dapat

dilakukan pada sebuah instance di scene atau pada aset prefab itu & semua objek Pick Up di project akan sekaligus berubah tanpa perlu mengubah satu demi satu.

• Di Unity: buat folder baru bernama Prefabs.• Drag object Pick Up ke dalam folder Prefabs.

Page 24: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

Buat 1 Empty Object untuk menyimpan objek Pick Up yang akan diperbanyak

• Klik menu GameObject, Create Empty, beri nama Pick Ups. Klik Reset.

• Drag objek Pick Up ke Pick Ups:

• Klik 2x pada Ground. • Klik Gizmo yang ada di paling atas sehingga

keseluruhan game area terlihat. • Klik & gerakkan ke sekeliling Ground• Terkadang akan tenggelam tertutup Ground.• (Setelah menggerakkan bisa menekan Ctrl Z jika ingin posisinya kembali seperti

sebelum digerakkan)

Page 25: Pertemuan 3 Roll a Ball (Part 2) - WordPress.com · menggelinding/berotasi bersama dengan object Player. • Tidak seperti game third person biasanya, object Player berotasi pada

• Klik mode Local menjadi Globalagar orientasi Gizmo berubah

sehingga game objek dapat di-drag relatif ke world global axis.

• Klik & gerakkan ke sekeliling GroundTidak akan terlihat tenggelam tertutup Ground.

• Perbanyak objek Pick Up dengan menu Edit, Duplicate atau Ctrl D, kemudian atur.