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