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:
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.