Upload
others
View
15
Download
1
Embed Size (px)
Citation preview
Pertemuan 12First Person Character Sederhana (Lanjutan)
Mata Kuliah Logika GameProgram Studi Teknologi PermainanSekolah Tinggi Multi Media YogyakartaTri Anggraeni, S.Kom., M.Sc.
Referensi: mammothinteractive.com
Membuat enemy
• Tambahkan cube, rename jadi Enemy. Set:
• Tambahkan material, rename jadi EnemyMaterial. Ubah warnanya jadi merah. Drag ke cube Enemy.
• Klik objek Enemy, Add New Script, beri nama EnemyController.
• Buat objek Enemy menjadi prefab (drag ke panel Assets).
• Delete objek Enemy di Hierarchy.• Create Empty GameObject, rename jadi
GameSceneController.
• Drag semua objek sehingga menjadi child GameSceneController.
• Klik objek GameSceneController, Add New Script, beri nama GameSceneController.
Skrip GameSceneController
• Buat akses ke prefab enemy dengan membuat objek:
• Buka Unity, tunggu sampai field Enemy Prefab muncul. Drag prefab Enemy dari panel Assets ke field Enemy Prefab sehingga :
Tambahi skrip GameSceneController sehingga prefab Enemy muncul ketika game mulaidijalankan Di function Start:
Klik Play mode. Tekan keyboard s agar FPS berjalan mundur & cube Enemy terlihat.
Membuat timer yang akan berjalan ke nol & kalau sudah nol: enemy muncul lagi
Klik mode Play. Diupdate/muncul tiap detik.
Pindahkan semua baris program di function Start untuk mengganti Debug.Log & memunculkan prefab Enemy setiap 1 detik
Hanya terlihat 1 Enemy.Karena posisinya masih diset sama:
enemyObject.transform.position =new Vector3(3, 1, 0);
Prefab Enemy muncul setiap detik.• Tekan keyboard s agar FPS berjalan
mundur & cube Enemy terlihat.
Klik mode Play.Cek panel Hierarchy:
Mengeset posisi enemyObject agar muncul diposisi yang berubah-ubah dengan jarak tertentu dari Player
Tambahkan sebelum function Start
Di function Update• Comment baris program yang mengeset
enemyObject muncul di posisi yang sama.
• Tambahkan:
// untuk mengotomatiskan perubahan
Klik mode Play
Prefab Enemy bermunculan di posisi yang berbeda-beda.
Klik Scene, klik 2x objek GameSceneController. Zoom in sampai terlihat seperti di samping.Prefab enemy muncul di
jarak 15 titik dari Player.
• Posisi awal hero (FPS): (0, 1, 0).• Misal spawnAngle = 90 : cos 90 = 0; sin 90 = 1:
enemyObject.transform.position = new Vector3(hero.transform.position.x + Mathf.Cos(spawnAngle) * enemySpawnDistance,hero.transform.position.y,hero.transform.position.z + Mathf.Sin(spawnAngle) * enemySpawnDistance);
0 + Mathf.Cos(90) * 15,1,0 + Mathf.Sin(90) * 15
0 + 0 * 15,1,0 + 1 * 15
0,1,15
enemyObject.transform.position =new Vector3(0, 1, 15 );Prefab Enemy yang posisinya mendekati (0, 1, 15):
Membuat Enemy mengejar Player
• Tambahkan di skrip EnemyController:
• Tambahkan di skrip GameSceneController di bawah setting posisi enemyObject:
• normalized: agar panjangnya menjadi 1.
Tambahkan di skrip EnemyController: di function Update:
• Klik mode Play.
Menabrak enemy
• Klik prefab Bullet. Add Component Rigidbody.• Centang Is Kinematic-nya.
• Klik prefab Enemy. Centang Is Trigger di component Box Colider-nya.
• Tambahkan di skrip EnemyController:
Klik mode Play
• Tercetak ketika FPS menabrak Enemy.
• Tercetak ketika Bullet menabrak Enemy.
Mendestroy Enemy & Bullet ketika bertabrakan
Tambahkan di bawah Debug.Log:
Klik mode Play.
Menampilkan skor• Tambahkan UI Text. Pastikan Canvas
berada di luar objek GameSceneController.
• Klik Text. Geser Text sehingga berada di kiri atas Canvas:
• Di Inspector: ubah warna Text menjadi putih.
• Skor muncul di kiri atas panel Game.
Membuat skor bertambah 100 ketika Enemy
• Di skrip GameSceneController, tambahkan:
• Di Unity: tunggu sampai field Info Text tampil.• Drag Text ke field Info Text:
Di skrip EnemyController:
• Tambahkan
• Di bawah GameObject.Destroy (col.gameObject);tambahkan:
Di skrip GameSceneController:
• Tambahkan:
• Di bawah baris program yang mengakses variabelchaseDirection, tambahkan:
Klik mode Play. Cek
ini tampil ketika Bullet mengenai Enemy.
Lengkapi definisi function onDestroyed agar skor bertambah 100 ketika Bullet mengenai Enemy:
Cek di mode Play: