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

Post on 30-Nov-2020

11 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Agenda:

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

menekan r

Menampilkan Game Over ketika FPS terkena Enemy

• Delete Main Camera karena di FPSController sudah ada camera.

Di skrip EnemyController:Di atas function Start, tambahkan:

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

Di skrip GameSceneController, tambahkan:

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

menjadi:

Mendeklarasikan function sederhana onHitPlayer()

Klik mode Play Unity.Tampilan ketika Player terkena Enemy:

Atau:

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

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.

Pertemuan 13Platformer Sederhana

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

Referensi: mammothinteractive.com

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.

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:

• Atur posisi scene menjadi:

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

• Paskan posisinya.

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.

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

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.

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)

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)

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

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.

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”).

Unity Documentation:

Solusi: mengganti function GetKeyDown menjadi GetKey.

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

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)

Unity Documentation:

(Vector velocity (kecepatan) rigidbody.

Modifikasi yang harus dilakukan:

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.

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.

top related