Home / Developer  / Game Development  / Article for Gamer  / เขียนเกม iPhone ด้วย SpriteKit ภาษา Swift กับการใช้หลัก Physics

เขียนเกม iPhone ด้วย SpriteKit ภาษา Swift กับการใช้หลัก Physics

บทเรียนตัวอย่างการพัฒนาเกมบน iPhone ด้วย Template ตัว SpriteKit ร่วมกับภาษา Swift กับการใช้หลัก Physics เพื่อเรียนรู้การทำงานของเกม

ถ้าเทียบหลัก Physics ในเกมแล้วนักพัฒนาที่เคยเขียน Cocos2D หรือ Box2D มาจะรู้ว่ามันช่วยเหลือ และผ่อนแรงในแง่ของการคำนวณในส่วนของ Colision Detect และเรื่องของ Gravity ให้แต่แรก จนแทบไม่ต้องไปแตะ Code ยุ่งยากส่วนนั้นเลย

ตัวอย่างในบทนี้ก็มาจาก เว็บไซต์ Avionicsdev ที่อธิบายได้แบบสบาย แอดวานซ์นิดๆ แต่ไม่เกินความพยายามของนักพัฒนาครับ โดย concept การอธิบายนั้นคือการทำ วัตถุเทลงมาใน แก้ว ขวด หรือตระก้า ถ้าล้นก็จะทะลักออกมา ถ้าเทหรือเอียงมันก็จะไหลออกไปในตำแหน่งที่เอียงนั้นๆ ก็เลยลองทำดู คือ ตระกร้า กับ ผลส้ม

เริ่มต้น เตรียมกราฟิก PNG ของตระกร้า และ ส้มให้เรียบร้อยครับ

ส้ม

ส้ม

ตระกร้า

ตระกร้า

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

http://dazchong.com/spritekit

เพื่อไปสร้าง ขอบเขตของ Collision Detect ส่วนของพื้นผิว ถ้านึกไม่ออกว่าทำไม มีตัวอย่างครับ

วางตระกร้าลงไป

วางตระกร้าลงไป

ต่อจากนั้นให้ วาดรูปตามขอบของตระกร้า (ตอนแรกๆ จะงง แต่พอทำความเข้าใจจะรู้และว่า ทำยังไง ที่จะได้รูปแบบข้างล่างนะครับ

วาดผิดก็วาดใหม่นะ

วาดผิดก็วาดใหม่นะ

ระบบจะทำการ Generated ตัว code ของ Collision Detect ของเราให้ทันที

มันภาษา Swift?

มันภาษา Swift?

มันไม่ใช่ภาษา Swift ครับ มันเป็น Objective-C ดังนั้นโปรเจ็คนี้ต้องทำในภาษา Swift สิ่งที่คุณต้อง แก้ไขทันทีคือ แก้ Syntax จาก Objective-C ให้เป็น Swift ซะ

ในตัวอย่างผมได้ทำการแก้ไขแล้วจะได้ดังนี้ครับ

ต่อมาก็ได้เวลา Code เกมแล้วล่ะครับ สร้าง New Project มาใหม่เป็น Template แบบ SpriteKit ครับ

สร้าง Template SpriteKit ขึ้นมา

สร้าง Template SpriteKit ขึ้นมา

เลือก Swift นะ ดูดีห้ามเลือก SceneKit

เลือก Swift นะ ดูดีห้ามเลือก SceneKit

นำภาพ orange.png และ basket.png ไปไว้ใน Bundle Project ของเราให้เรียบร้อย หลังจากนั้นเปิดไฟล์ GameScene.swift ขึ้นมาครับ

ทำการสร้างฟังกืชันของ Range ที่ผลส้มจะหล่นมาก่อน ซึ่งเราจะให้มันหล่นแบบเทกระจาด

ต่อมาเตรียมพร้อมให้กับผลส้มของเราโดย เพิ่ม เมธอดฟังก์ชันต่อไปนี้ ใน

เพิ่มเข้าโดยเอา ส่วนของ Collision Detect ที่ทำไว้ใส่ลงไป ให้เป็นแบบนี้

ต่อจากนั้นเพิ่ม เมธอดฟังก์ชันของการทำงาน เล็กน้อยสำหรับ ส้ม ให้ไหลล่วงหล่น โดยมีการเรียกฟังก์ชัน Range ในการร่วงไม่จบไม่สิ้นใน Class GameScene()

คราวนี้จะลองทำการเทตระกร้า โดยใช้ interval และการหมุนแกนตำแหน่งของการเทเพิ่มเข้ามาให้กับ Basket ของเรา ให้เพิ่มฟังก์ชันนี้ลงใน Class GameScene() เช่นกัน

ภาพรวมของ Source Code ทั้งหมดของ GameScene.swift จะเป็นดังนี้

ทดสอบการ Run ตัว Project เกม Swift ของเราหน่อย

ส้มหล่นลงตระกร้า

ส้มหล่นลงตระกร้า

เทส้มให้รู้ว่ามันหล่นตามแรงโน้มถ่วง

เทส้มให้รู้ว่ามันหล่นตามแรงโน้มถ่วง

ดาวน์โหลด Source code ได้ที่: http://www.daydev.com/download/BasketSwift.zip

ลองเอาไปทำกันดูนะครับทุกคนตัวอย่างเมืองนอกเค้าก็ทำ เข้าใจเหมือนกันนะ

Comments

daydevthailand@gmail.com

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

Review overview
%d bloggers like this: