บทเรียนการสร้างเกมแนว God Simulation บน Unity 3D ในส่วนของการ Spawn ตัว Enemy ออกมาเป็นอุปสรรคของเกม
ต่อเนื่องจากบทเรียนที่แล้ว:
ส่วนนี้ง่ายที่สุดคือการนำโมเดล 3 มิติมาวางไว้ในฉาก พร้อมตกแต่ง Particle System ตามจุดต่างๆให้เรียบร้อย
ตั้งค่าศัตรูของเราเป็น Golem ไฟ และ น้ำขึ้นมาโดยใช้ Material และ Particle ที่แตกต่างกัน
ทดสอบวางไว้ในตำแหน่งของตัว Planet เราสัก 3-4 จุด
กำหนด Particle ให้สวยงามและกำหนด Collider เป็น Sphere ตั้ง isTrigger เป็น True
ไปที่ GameObject ที่เป็น Empty GameObject สร้างไฟล์ SpawnEnemy.cs ขึ้นมาใส่ Code ดังนี้ เป็นการทดสอบ
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnEnemy : MonoBehaviour { public GameObject position1; public GameObject position2; public GameObject position3; public GameObject position4; public bool isRandom = false; float timeElapsed = 0; public float SpawnCycle = 1f; public int randomEnemy = 0; void Start () { position1.SetActive(false); position2.SetActive(false); position3.SetActive(false); position4.SetActive(false); } void Update () { timeElapsed += Time.deltaTime; if(timeElapsed > SpawnCycle) { isRandom = true; if(isRandom == true){ randomEnemy = Random.Range(0, 4); isRandom = false; Debug.Log(randomEnemy); } monsterShow(randomEnemy); timeElapsed -= SpawnCycle; } } public void monsterShow(int randomData){ if(randomData == 0){ position1.SetActive(true); }else if(randomData == 1){ position2.SetActive(true); SpawnCycle = Random.Range(2f, 6f); }else if(randomData == 2){ position3.SetActive(true); SpawnCycle = Random.Range(2f, 6f); }else if(randomData == 3){ position4.SetActive(true); SpawnCycle = Random.Range(1f, 3f); } } }
ใช้การสุ่ม 0-4 เพื่อมากำหนดให้ Position ต่างๆ เป็น SetActive()
public void monsterShow(int randomData){ if(randomData == 0){ position1.SetActive(true); }else if(randomData == 1){ position2.SetActive(true); SpawnCycle = Random.Range(2f, 6f); }else if(randomData == 2){ position3.SetActive(true); SpawnCycle = Random.Range(2f, 6f); }else if(randomData == 3){ position4.SetActive(true); SpawnCycle = Random.Range(1f, 3f); } }
เมื่อเสร็จแล้วลากตัว Golem ทุกตัวใน Scene ไปวางใน Position แต่ละตัว
ตัวอย่างการทดสอบจะสุ่ม 1 ที ตอนนี้ใช้การแก้ไข Inspector ส่วนของ Random Enemy เป็น 0,1,2,3 เอานะครับเพื่อที่เราจะเขียนโปรแกรมต่อทีหลังว่าถ้าเอา Power Element ไปจัดการ Golem แต่ละตัวจะเกิดเงื่อนไขของคะแนน
บทเรียนนี้ก็ทดสอบตามนี้ครับ
บทเรียนย้อนหลัง: