pertemuan 13 first person character sederhana (lanjutan)...2019/09/13  · pertemuan 13 first person...

26
Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi Permainan Sekolah Tinggi Multi Media Yogyakarta Tri Anggraeni, S.Kom., M.Sc. Referensi: mammothinteractive.com

Upload: others

Post on 30-Nov-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Pertemuan 13First Person Character Sederhana (Lanjutan)

Mata Kuliah Logika GameProgram Studi Teknologi PermainanSekolah Tinggi Multi Media YogyakartaTri Anggraeni, S.Kom., M.Sc.

Referensi: mammothinteractive.com

Page 2: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Agenda:

• Menampilkan Game Over ketika FPS terkena Enemy• Menambahkan program untuk restart ketika

menekan r

Page 3: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Menampilkan Game Over ketika FPS terkena Enemy

• Delete Main Camera karena di FPSController sudah ada camera.

Page 4: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Di skrip EnemyController:Di atas function Start, tambahkan:

Di dalam function OnTriggerEnter, setelah & di luar if yang mengecek apakah yg ditabrak adalah bullet, tambahkan:

Page 5: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Di skrip GameSceneController, tambahkan:

Enemy didestroy ketika terkena BulletPastikan Player ada ketika Enemy dimunculkan: Di skrip GameSceneController, ubah

menjadi:

Page 6: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Mendeklarasikan function sederhana onHitPlayer()

Klik mode Play Unity.Tampilan ketika Player terkena Enemy:

Atau:

Page 7: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

• Jika Game over! Press R to restart-nya tidak terlihat sama sekali/keseluruhan, klik objek Text-nya, perbesar/perpanjang ukuran width &/ height-nya:

Page 8: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Menambahkan program untuk restart ketika menekan r

• Di skrip GameSceneController, function Update, setelah if yang pertama selesai, tambahkan:

• Klik mode Play: • Tekan r ketika game over.

Page 9: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Pertemuan 13Platformer Sederhana

Mata Kuliah Logika GameProgram Studi Teknologi PermainanSekolah Tinggi Multi Media YogyakartaTri Anggraeni, S.Kom., M.Sc.

Referensi: mammothinteractive.com

Page 10: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Agenda:

• Membuat level, player.• Membuat agar Player dapat jatuh, lompat, memutar

(bergerak ke kanan & ke kiri).• Membuat pergerakan ke kanan kiri Player dapat

dilakukan terus-menerus tanpa berhenti.

Page 11: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Membuat Level

• Klik Main Camera, set:

• Create Empty object, ganti namanya menjadi Level.• Set posisinya (0, 0, 0). Save scene.• Klik kanan di objek Level. Create cube. Buat jadi lantai.

Set:

• Duplicate cube. Buat jadi dinding. Set:

Page 12: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

• Atur posisi scene menjadi:

• Duplicate Cube (1). • Geser Cube (2) ke ujung kanan lantai.

• Paskan posisinya.

Page 13: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Membuat Player

• Create Cube. Jangan jadi child Level:Set:

• Beri warna biru dengan Material.

Buat agar cube Player dapat jatuh, lompat, menghindari obstacle, & mencapai akhir level• Add Component Rigidbody. Klik mode Play.• Jika Player tidak terlihat: klik Main Camera, geser

posisinya agar keseluruhan Level & Player terlihat.

Page 14: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Membuat Player dapat melompat• Rename cube player menjadi Player.• Add component New script. Beri nama

PlayerController.

• Ingat materi Pertemuan 4 (Game Runner).• Player melompat ketika menekan keyboard apa? Spasi.

• Di Game Platformer sederhana ini, Player melompat ketika menekan keyboard w.

• Seperti di materi Pertemuan 4, buat agar Player dapat melompat (baru buka slide berikutnya).

Page 15: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Membuat Player dapat melompat• Di skrip PlayerController, sebelum function Start,

tambahkan:

• Di dalam function Update, tambahkan:

• Di Unity, set Jump Strength:• Cek di mode Play.

Page 16: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Di Runner Game:

• Player bergerak ke atas/melompat ketika pemain menekan keyboard spasi, tapi otomatis bergerak ke kanan.

Di Platformer Game: • Player bergerak ke atas/melompat ketika pemain

menekan keyboard w, bergerak ke kiri ketika pemain menekan keyboard a. Tambahkan sebelum function Start:

Seperti program ketika menekan keyboard w, buat program ketika menekan keyboard a. (Sebelum melihat

slide berikutnya)

Page 17: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Di dalam function Update, tambahkan:

• Minus agar bergerak ke kiri.

• Player bergerak ke kanan ketika pemain menekan keyboard d.

• Seperti program ketika menekan keyboard a, buat program ketika menekan keyboard d (sebelum melihat slide berikutnya)

Page 18: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Di dalam function Update, tambahkan:

• Di Unity, set Movement Strength:• Klik mode Play. Tekan w, d, a. Pergerakan Player berotasi Harusnya tidak: Cek di materi Pertemuan 4: cara agar Player tidak

berotasi (sebelum melihat slide berikutnya).

Page 19: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Agar Player tidak berotasi

• Klik objek Player, di Inspector Rigidbody: klik Constraints, Freeze Rotation:

• Klik mode Play. Tekan w, d, a.Player sudah tidak berotasi. Tapi pergerakan ke

kanan & kirinya tidak smooth.

Page 20: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Ketika function GetKeyDown dipanggil dalam conditional block seperti if:

Function ini dipanggil right in the frame when the key is pressed.

Selama apapun keyboard w/a/d ditekan, this.GetComponent<Rigidbody> ().AddForce () hanya dipanggil 1x.

Untuk menggerakkan Player lagi: keyboard w/a/d tidak bisa ditekan terus. Harus dilepas dulu, kemudian ditekan lagi.

Solusi: mengganti function GetKeyDown (“a”) & GetKeyDown (“d”) menjadi GetKey (“a”) & GetKey (“d”).

Page 21: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Unity Documentation:

Solusi: mengganti function GetKeyDown menjadi GetKey.

Coba & klik mode Play. Tekan w, d, a.

Page 22: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Pergerakan Player menjadi sangat cepat.We are adding a force every frame.

In a very few miliseconds, the force will be so strong & mendorong Player bergerak jauh.

Solusi: keep the force static sekali tekan: sekali force: sekali movementStrength.

Modify the velocity directly seperti pada PlayerController Runner Game Pertemuan 4.

Cek program di PlayerController Runner Game/ Pertemuan 4 yang menggerakkan Player ke kanan, coba modify program Platformer yang menggerakkan Player ke kiri & kanan (mengganti AddForce menjadi velocity & mengganti nilai-nilai Vector3-nya).

AddForce1

Frame 1

AddForce2

Frame 2

AddForce3

Frame 3

AddForce4

Frame 4

AddForce5

Frame 5

AddForcen

Frame n

(Sebelum melihat slide berikutnya)

Page 23: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Unity Documentation:

(Vector velocity (kecepatan) rigidbody.

Page 24: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Modifikasi yang harus dilakukan:

Page 25: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Kalau tidak pakai Time.deltaTime:• Pergerakan Player sangat cepat.• movementStrength merupakan nilai yang sangat besar untuk

sesuatu yang harus dipanggil setiap frame Update.• Di komputer yang cepat: function Update lebih sering

dipanggil, velocity/movementStrength juga lebih seringdipanggil & diubah.

• Di komputer yang lambat: function Update lebih jarangdipanggil, velocity/movementStrength juga lebih jarangdipanggil & diubah.

Page 26: Pertemuan 13 First Person Character Sederhana (Lanjutan)...2019/09/13  · Pertemuan 13 First Person Character Sederhana (Lanjutan) Mata Kuliah Logika Game Program Studi Teknologi

Time.deltaTime:

• The time in seconds it took to move from a frame to another frame.

• Jika komputer cepat: value movementStrength * Time.deltaTime kecil karena nilai Time.deltaTime-nya juga. Player akan bergerak lebih lambat.