DeveloperGame DevelopmentiOS DeveloperObjective CProgramming LanguageSocial MediaSocial Media Marketing

iOS Game Developer Tutorial: การเรียกใช้ Collision Detect ผ่าน Cocos2D

การเรียกใช้คำสั่ง Collision Detect ด้วย Cocos2D ให้ตัวละครในเกมยิงกระสุน ไปโดนศัตรูให้หายไปได้ผ่าน XCode สำหรับ iOS Developer มือใหม่ที่อยากพัฒนาเกมจากบทความก่อนหน้านี้ “iOS Game Developer Tutorial: วางภาพ Spriteตัวละครลงในเกมด้วย Cocos2D” ที่มีการวางตัวละครลงไปในเกมแล้ว และมีศัตรูปรากฏวิ่งไปมาแล้วต่อไปเราต้องสร้างกระสุนของตัวละครให้ยิงออกไปโดนศัตรู เริ่มต้นสร้างกระสุน และวิธีในการยิงของเรา ให้ไปเพิ่มคำสั่งเล็กน้อยที่ ฟังก์ชัน init() ครับ ก่อนคำสั่งประกาศขนาดหน้าจอของเรา

หาภาพกราฟิก สำหรับสร้างเป็นลูกกระสุนของเรา ตั้งชื่อว่า “Bullet.png”  ขนาดความก้าว และ ความยาว 40×40 pixels

ไฟล์ชื่อ "Bullet.png"
ไฟล์ชื่อ “Bullet.png”

พร้อมทั้งใส่คำสั่งต่อไปนี้ลงไปในไฟล์  PlayScene.m เป็นการเรียกคำสั่งเดียวกับเมนูคือเมื่อมีการแตะแล้วปล่อยที่พิกัดใดๆ กระสุนจะวิ่งไปยังพิกัดดังกล่าว

ทดลอง “Run” ตัวแอพพลิเคชันดู แล้วทำการ คลิกไปที่ บริเวณใดๆ ของหน้าจอจะพบว่าตัวละครจะยิงกระสุนไป ยังบริเวณที่เราคลิก หรือทำการแตะ

กระสุนยิงกระจุย
กระสุนยิงกระจุย

วิธีการตรวจสอบการชนกันของวัตถุ หรือ Collision Detect
Collision Detect เป็นหลักการเดียวที่ทุกเกม ไม่ว่าจะอยู่บนแพลตฟอร์มใดๆ จะต้องใช้งานเป็นสากลเพราะเป็นการตรวจสอบว่าวัตถุชิ้นหนึ่งเมื่อซ้อนทับหรือชนกับอีกชิ้นหนึ่งแล้วจะเกิดเงื่อนไขอะไรขึ้นซึ่งในเกมของเราจะใช้อยู่ 2 เงื่อนไขหลักๆ คือ

  • กระสุนโดนศัตรู ศัตรก็จะตาย
  • ศัตรูโดนเรา เราก็ตาย “GameOver”

ให้ไปที่ไฟล์ PlayScene.h ครับทำการประกาศ ตัวแปลชนิด NSMutableArray ลงไปดังรูปแบบข้างล่าง

ต่อมาให้ไปเพิ่มคำสั่งในไฟล์ PlayScene.m ครับในฟังก์ชัน init() บรรทัดต่อจาก คำสั่ง self.isTouchEnabled = YES; ไปเลยครับ

ทำการคืนหน่วยความจำของกระสุนปืน และศัตรูของเราลงไปในฟังก์ชัน dealloc() ครับ

เพิ่มคำสั่งลงไปในฟังก์ชัน addTarget() ในตำแหน่งบรรทัดล่างสุดก่อนปิดฟังก์ชัน

ให้เข้าไปเพิ่มที่ฟังก์ชัน ccTouchesEnded เช่นกันในตำแหน่งก่อนปิดฟังก์ชันบรรทัดสุดท้าย

ต่อมาแก้ไข ฟังก์ชัน spriteMoveFinished จากเดิมคือ

ให้กลายเป็น

ทำการ “Run” ตรวจสอบดูอีกครั้งว่ามี Error ปรากฏไหม เพราะว่าเรามากันไกลมากแล้ว, ต่อไปจะเป็นการตรวจสอบเงื่อนไขของการ ชนกันของวัตถุ ที่สำคัญมาก แทรกคำสั่งนี้ลงไปในไฟล์ PlayScene.m เลยครับ

คำสั่งข้างต้นเป็นการเคลียร์ทุกสิ่งที่มีการ ชนกันโดยจะยึดตามขนาดของความกว้าง และความยาวของวัตถุที่ปรากฏในเกมเป็นหลักเพื่อตรวจสอบการชนกัน

ต่อมาให้แทรกคำสั่งต่อไปนี้ลงไปในฟังก์ชัน init() ต่อจากคำสั่ง Interval ก่อนปิดฟังก์ชัน

ทำการ “Run” แอพพลิเคชัน แล้วลอง ยิงกระสุนไปยังศัตรูของเราดูจะพบว่า ศัตรูของเราได้หายไปแล้วเมื่อโดนกระสุน

ยิงกระสุนโดนศัตรูกราดให้พอใจ
ยิงกระสุนโดนศัตรูกราดให้พอใจ

ในบทเรียนต่อไปจะเป็นพาไปรู้จักกับการตรวจสอบการชนกันเมื่อศัตรูเลื่อนมาโดนเราแล้วแสดงผลหน้าจอ Game Over และองคฺประกอบเพิ่มเติมต่อไปนี้

  • การใส่ไฟล์เสียงลงไป (Audio)
  • การทำฉากหลังเลื่อนได้ (Paralax BackGround)
  • การหยุดเกม (Pause)
  • การเปลี่ยนหน้า (Winner, Game Over)

Tags

Banyapon Poolsawasd

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Leave a Reply

Back to top button
Close
Close

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน