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

Pertemuan 2 Roll a Ball (Unity Official Tutorials)Pertemuan 2 Roll a Ball (Unity Official Tutorials) Program Studi Teknologi Permainan Sekolah Tinggi Multi Media Yogyakarta Tri Anggraeni,

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Pertemuan 2Roll a Ball (Unity Official Tutorials)

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

Video 7: 8.13 – 8.24

Buat project baru

• Rekomendasi nama project & tempat penyimpanan:

• Save scene (tekan keyboard Ctrl S atau klik menu File, submenu Save Scene, buat folder dengan nama Scenes, save scene dengan nama MiniGame).

Membuat play field (arena bermain) dari 3D Object Plane• Klik menu GameObject, submenu 3D Object, Plane.• Di Hierarchy, klik Plane, ubah namanya menjadi

Ground. Posisi:

Cara cepat: klik , kemudian klik Reset.Ada grid. Hilangkan dengan mengeklik tanda panah di kanan Gizmos,

kemudian hilangkan centangan Show Grid.

Ubah ukuran plane

• Bisa dengan menggerakkan sumbu-sumbu yang muncul setelah mengklik

• Atau langsung mengganti

Membuat objek Player dari Sphere• Klik menu GameObject, submenu 3D Object, Sphere.• Di Hierarchy, klik Sphere Tertanam separo

di Plane tekan keyboard w agar muncul sumbu xyz untuk menggeser object.

Klik panah ke atas & geser ke atas

• Set:

• Ubah nama Sphere menjadi Player.

Beri warna pada play field• Di panel Project: klik Create, Folder, namai Materials.• Klik kanan folder Materials, klik Create, Material. Beri

nama Background.

• Klik material Background. Di panel Inspector: klik kotak di kanan Albedo hingga muncul Panel Color.

•• Pilih warna dengan mengeklik

kotak Hue & Saturation.• Drag material Background ke

Plane.

• Klik cube, ganti namanya menjadi Ground.

Rotate Directional Light

• Klik objek Directional Light, set:

Menggerakkan player• Memerlukan komponen fisika Rigidbody.• Rigidbody: kontrol dari suatu posisi objek melalui

simulasi fisika.• Klik objek yang ingin diberi komponen Rigidbody

(objek Player). Klik menu Component, submenu Physics, Rigidbody. Atau dari tombol Add Component (tombol paling bawah di Inspector).

Urutkan komponen-komponen objek Player

• Dapat mempercepat pembuatan projek dengan mengurutkannya sesuai hierarki (meskipun tidak mempengaruhi performance game).

• Klik menu gear di tiap komponen, klik Move Up / Move Down hingga urutan komponennya

seperti gambar di atas.

Menggerakkan player

• Inputan: keyboard tanda panah atas bawah kiri kanan.

• Dengan skrip program.• Di panel Project, buat folder dengan nama Scripts.• Susunan folder:

• Klik kanan folder Scripts, klik Create, C# Script, ubah namanya menjadi PlayerController.

• Di Inspector muncul: Klik

Ketentuan Unity: When you use C#, you mustexplicitly derive from MonoBehaviour.• Seperti di pertemuan terakhir kelas Algoritma:

using System;namespace Polygon {

public class Rectangle : Polygon {public int area() {

return ( width * height ) ;} } }

Derived class/class turunan

Parent/base class

Tampil Unity Documentation di browser:

• Class MonoBehaviour mengeset variabel2 & method2 yang dapat digunakan oleh semua class yang di-derive/diturunkan darinya.

• Derived class (class turunan) dapat meng-inherit/ mewarisi/menggunakan variabel & method yang ada di class yang menurunkannya (parent/base class). Class Player dapat meng-inherit/mewarisi/

menggunakan variabel & method yang ada di class MonoBehaviour (cek Unity Documentation yang tampil di browser untuk mengetahui variabel2 & method2/function2 yang ada).

• Klik 2x script Player hingga muncul di MonoDevelop/Visual Studio.

• Jika ingin mengganti editor: klik menu Edit, submenu Preferences. Klik External Tools, pilih External Script Editor:

PlayerController.cs defaultusing System.Collections;using System.Collections.Generic;using UnityEngine;

public class Player : MonoBehaviour {

// Use this for initializationvoid Start () {

}

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

}}

Skripnya harus gimana?• Perlu mengecek setiap frame untuk inputan player.• Gunakan input itu ke objek Player di setiap frame sebagai

gerakan.• Dimana input dicek dan digunakan? Di method Update dan FixedUpdate

• Method Update dipanggil sebelum merender sebuah frame.

• Method FixedUpdate dipanggil sesaat sebelum melakukan suatu perhitungan fisika Tempat meletakkan program yang ada hubungannya

dengan fisika.• Bola digerakkan dengan memberikan suatu kekuatan

pada Rigidbody merupakan suatu fisika program untuk ini diletakkan di method FixedUpdate.

• Input. Cari tau apa yang harus ditulis dengan Input:Ketikkan & block kata Input di MonoDevelop/VS,

tekan keyboard Ctrl ‘ (harus ada koneksi internet).Atau ketikkan Input di kotak Search scripting di Unity

Documentation yang telah tampil di browser tanpa koneksi internet:

Sintaks apa yang perlu ditulis?

Dari Unity DocumentationMonoBehaviour, deklarasi function FixedUpdate:

• Temukan function GetAxis di daftar function di bawah Description di atas.

Contoh penggunaan:

float translation = Input.GetAxis("Vertical") * speed; float rotation = Input.GetAxis("Horizontal") * rotationSpeed;

Klik

Di PlayerController:

float moveHorizontal = Input.GetAxis ("Horizontal");float moveVertical = Input.GetAxis ("Vertical");

• Menangkap inputan dari player melalui keyboard.• Memerlukan input dari sumbu horizontal & vertikal

yang dikontrol oleh keyboard.• Objek Player menggunakan Rigidbody & berinteraksi

dengan fisika.• Inputan ini digunakan untuk memberikan kekuatan

kepada Rigidbody & menggerakkan objek Player pada scene.

• float: angka desimal dengan ketelitian 7 angka di belakang koma.

Cara memberikan kekuatan kepada Rigidbody

• Ketikkan & block kata Rigidbody di MonoDevelop/ VS, tekan keyboard Ctrl ‘ (harus ada koneksi internet).

• Atau ketikkan Rigidbody di kotak Search scripting di Unity Documentation yang telah tampil di browser tanpa koneksi internet:

• Cek function2 yang ada di class Rigidbody. Cari yang ada hubungannya dengan kekuatan (force). AddForce: Adds a force to the rigidbody. public void AddForce

(Vector3 force, ForceMode mode = ForceMode.Force);

public void AddForce (Vector3 force, ForceMode mode = ForceMode.Force);

• Vector3: berisi nilai desimal di 1 container yang memudahkan pergerakan dan menggunakan nilai-nilai itu untuk hal-hal seperti memberikan force di 3D space yang memerlukan sebuah nilai untuk force pada tiap sumbu xyz, untuk mendeskripsikan rotasi yang juga memerlukan sebuah nilai untuk tiap sumbu xyz.

public void AddForce

• Skrip PlayerController perlu memberikan kekuatanagar Player bisa bergerak menggunakan komponen Rigidbody.

• Perlu mengakses komponen dari skrip komponen lain pada game objek yang sama.Buat variabel untuk menyimpan reference di skrip.Reference ini diset pada function Start.

Contoh penggunaan AddForce di Unity Documentation

• Semua code di function Start dipanggil di frame pertama ketika skrip aktif.

Untuk menyimpan reference ke Rigidbody yang mau diakses

Untuk menemukan & mengembalikan reference ke Rigidbody yang diberikan (jika ada).

Komponen Rigidbody yang diberikan, diakses ke variabel rb

Tambahkan 3 baris sintaks di slide sebelumnya ke PlayerController.cs sehingga menjadi:using System.Collections;using UnityEngine;

public class PlayerController : MonoBehaviour {private Rigidbody rb;void Start () {

rb = GetComponent<Rigidbody>();}void FixedUpdate () {

float moveHorizontal = Input.GetAxis ("Horizontal");float moveVertical = Input.GetAxis ("Vertical");rb.AddForce (Vector3);

}}

void FixedUpdate () {float moveHorizontal = Input.GetAxis ("Horizontal");float moveVertical = Input.GetAxis ("Vertical");rb.AddForce (Vector3);

}

Cara meletakkan nilai float moveHorizontal & moveVertical ke dalam Vector3:

• Buat variabel Vector3 movement = new Vector3(x,y,z);• Nilai xyz menentukan arah force yang diberikan ke

bola (sphere Player).• x = moveHorizontal panah ke kiri & kanan

memberikan force & menggerakkan bola ke kiri kanan• y = 0.0f karena di projek ini bolanya tidak

diinginkan bisa bergerak ke atas

• z = moveVertikal (maju mundur)

Vector3 movement = new Vector3(x,y,z);Menjadi: Vector3 movement = new Vector3(moveHorizontal , 0.0f, moveVertikal);

Variabel movement digunakan di rb.AddForce sehingga rb.AddForce (Vector3); menjadi: rb.AddForce (movement);

Skrip menjadi:using System.Collections;using UnityEngine;

public class PlayerController : MonoBehaviour {private Rigidbody rb;void Start () {

rb = GetComponent<Rigidbody>();}void FixedUpdate () {

float moveHorizontal = Input.GetAxis ("Horizontal");float moveVertical = Input.GetAxis ("Vertical");Vector3 movement = new Vector3(moveHorizontal , 0.0f, moveVertikal);rb.AddForce (movement);

}} Save, compile. Kalau Build successful, cek Unity.

• Drag skrip PlayerController ke objek Player hingga di Inspector Player muncul:

• Klik Save, jalankan dengan mengeklik tombol • Tekan keyboard panah ke kiri/kanan/atas/bawah/

a/s/d/w. Bola bergerak?

Membuat tool yang dapat memberikan kontrol pada kecepatan bola

• Agar gerakan bola bisa lebih cepat, nilai movement pada rb.AddForce perlu dikalikan dengan suatu nilai. Misal: rb.AddForce (movement * 100);

• Kalau seperti ini, ketika kecepatan ingin diubah, skrip harus diedit.

• Agar lebih cepat: tambahkan variabel public. Misal:public float speed;

• Ubah rb.AddForce (movement * 100); menjadi rb.AddForce (movement * speed); Simpan perubahan sehingga kecepatan

movement jadi bisa diubah-ubah dari Unity.

• Variabel public muncul di Inspector Unity sebagai properti yang bisa diedit.

• Klik objek Player. Cek di Inspectornya ada:

• Ubah nilai Speed, misal menjadi 10. Simpan. Jalankan.