บทความนี้มีเป้าหมายให้ผู้อ่านได้ทดลองใช้มุมมอง 2 มิติ ในระบบ 3 มิติ โดยผู้เล่นเลื่อนซ้ายขวา และกระโดด พร้อมทั้งมีการป้องกันไม่ให้เดินออกนอกหน้าจอ มีศัตรูเดินซ้าย/ขวา และทำการล็อกไม่ให้ผู้เล่น/ศัตรูขยับแกน Z มาเริ่มกันเลย
ขั้นตอนที่ 1 เตรียมฉาก :: Player / Floor
ขั้นตอนที่ 2 ตั้งค่า Main Camera ให้เป็น Orthographic
ขั้นตอนที่ 3 เพิ่ม Cube สำหรับเป็นตัวกันไม่ให้ผู้เล่นเดินตกจากพื้น
โดยตั้งชื่อ cube ทางด้านซ้ายว่า LeftSide และทางด้านขวาเป็น RightSide
สิ่งที่สำคัญคือ ต้องพยายามจัดตำแหน่งของ LeftSide และ RightSide ให้มองไม่เห็นเมื่อสั่งเล่นเกม
หลังจากนั้นให้เพิ่มส่วนป้องกันทางด้านบน และตั้งชื่อว่า UpSide
ด้านบนมี Rigidbody พร้อม mass เยอะมาก ๆ
ขั้นตอนที่ 4 โค้ดของ Player
ขยับผู้เล่นไปทางซ้าย/ขวา
ขั้นตอนที่ 5 เพิ่มส่วนป้องกันไม่ให้กดกระโดดถ้าไม่ได้อยู่บนพื้น
- เพิ่ม tag ชื่อ Ground ให้กับพื้น
- ปรับปรุงโค้ด
- เพิ่มตัวแปรตรวจสอบสถานการณ์อยู่บนพื้น
- OnCollisionStay() -> สถานะเป็น true
- OnCollisionExit() -> สถานะเป็น false
เริ่มต้นด้วยการเพิ่ม Tag ให้กับพื้น (Floor) ให้เป็น Ground โดยในตอนเริ่มนั้นจะถูกเลือกเป็น Untagged ให้เลือกเปลี่ยนเป็น Add Tag…
จะปรากฎหน้าต่างสร้าง Tag ใหม่ด้วยการคลิกที่เครื่องหมาย +
เปลี่ยนจาก New tag เป็น Ground แล้วคลิก Save
จะมีรายชื่อ Ground อยู่ใน Tags โดยเป็น Tag 0 อันหมายถึงเป็นแท็กลำดับแรก
เพิ่ม tag ชื่อ Ground ให้กับพื้น
เพิ่มตัวแปร isGrounded สำหรับเก็บสถานะของการอยู่บนพื้น
เพิ่มโค้ดตรวจสอบสถานะ โดยเขียนฟังก์ชัน OnCollisionStay() และ OnCollisionExit()
เพิ่มโค้ดตรวจสอบว่าถ้าอยู่บนพื้นจะให้กระโดดใน Update()
ขั้นตอนที่ 6 เพิ่มศัตรูเป็นกล่องสีแดงไว้ทางด้านขวาของฉาก
พร้อมตั้ชื่อเป็น Enemy
เพิ่มกล่องสำหรับให้ Player สามารถกระโดดไปยืนบนนั้นอีก 2 อัน
ขั้นตอนที่ 7 เพิ่มโค้ดของศัตรู
เดินทางซ้าย 200 ก้าว
เดินทางซ้าย 200 ก้าวครบแล้วเปลี่ยนเป็นทางขวา
สลับการเดินซ้าย/ขวา
ขั้นตอนที่ 8 ป้องกันไม่ให้ค่า z เปลี่ยนแปลง
ปรับปรุงโค้ดของผู้เล่น
ปรับปรุงโค้ดของศัตรู
ขั้นตอนที่ 9 ทดสอบการทำงาน
สรุป
จากบทความนี้ ผู้อ่านจะสามารถควบคุมตัวละครให้สามารถเดินซ้าย/ขวาและกระโดด(เมื่อตัวเองอยู่บนพื้น)ได้ โดยมีศัตรูที่สามารถเดินไปทางซ้ายแล้วเดินกลับมาทางขวาสลับไปมา
ส่วนโค้ดของการเขียนโปรแกรมเป็นการใช้ trasnform เพื่อเปลี่ยนแปลงตำแหน่ง (position) และเพิ่มเติมเรื่องของการปรับไม่ให้ค่าในแหน Z หรือในแนวลึกมีการเปลี่ยนแปลง
นอกจากนี้ได้ทำการเลปี่ยนมุมมองของกล้องจาก Perspective ให้เป็น Orthographic ทำให้ฉากแบบ 3 มิติถูกมองเป็น 2 มิติอีกด้วย
ครั้งหน้าจะเพิ่มการโจมตี การลดของHP และการทำลายวัตถุกันต่อไป … สุดท้ายนี้ขอให้สนุกกับการฝึกเขียนเกมครับ
(C) 2024, โดย จารุต บุศราทิจ
DcG.IT@PBRU
ปรับปรุงเมื่อ 2024-11-12
Pingback: EP 3 C# Script Unity101 – gamedevpbru.com