pertemuan 12 first person character sederhana (lanjutan)pertemuan 12 first person character...
TRANSCRIPT
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: