Home / Developer  / Game Development  / 2D Game Development  / Godot Engine  / เขียนเกม 2D ด้วย Godot Engine การควบคุมตัวละคร Full Movement

เขียนเกม 2D ด้วย Godot Engine การควบคุมตัวละคร Full Movement

บทเรียนการควบคุม KinematicBody2D ให้สามารถควบคุมตัวละครแบบ Full Movement Character พร้อม Node ของ Static Platform สำหรับสร้างเกม 2D บน Godot Engine

โปรดศึกษาบทเรียนก่อนหน้า:

บทเรียนนี้จะเป็นการต่อยอดบทเรียนที่ได้ศึกษามาก่อนหน้าให้เกิดความสมบูรณ์ขึ้น นั่นคือการประยุกต์ตัวงานเกมของเราให้เป็น Platform 2D Game เปิด Project ขึ้นมา สร้าง Node2D ตั้งชื่อใหม่ว่า World

หลังจากนั้นให้ Add Child Node ลงไปเลือก KinematicBody2D สร้างตัวละครเช่นเดิม พร้อมเลือก Sprite ตั้งค่า AnimatedSprite ท่าทางเริ่มต้นคือ “Idle”

ทำการเพิ่ม Collision2D เข้าไปเป็น Child Node ของ KinematicBody2D

ตัว CollisionShape2D นี้จำต้อง ใส่รูปทรงของวัตถุครอบ Sprite มันก็คือส่วนของการตรวจจับการชนหรือสัมผัสระหว่างวัตถุในเกม (Node) จำนวน 2 ตัวนั่นเอง

ระบบจะถามหาเป็นสิ่งแรก ในภาพตั้งชื่อ KinematicBody2D ตัวละครเป็น RigidBody2D Player (ตั้งชื่อผิด ขี้เกียจแก้)

เพิ่ม StaticBody2D ลงไปใน World เพื่อสร้าง Platform ของพื้นที่ตัวละครจะเหยียบ และเดินไปมา ใส่ Sprite คือพื้นหญ้า และเพิ่ม CollisionShape2D เลือก Retangle ที่ Inspectorให้กับมัน

เพิ่ม StaticBody2D

เลือก Shape ที่เหมาะสมใน Inspector

เลือก CollisionShape2D เป็น Rectangle สี่เหลี่ยม

หากทดลองเล่นๆกลับไปเลือก CollisionShape2D ของ Player เป็น Capsule ดู

ผลลัพธ์ตอน run เกมจะเป็นแบบนี้ (กด F5) ทดสอบ (ดู gif ข้างล่าง) ตัวละครจะกลิ้งไปมาตาม Shape ของ Collision

ดังนั้นลองเลือก Retangle Shape ให้กับตัวละคร

สร้าง Animted ชุดของ walk และ jump ขึ้นมาใหม่ เสียเพื่อที่เราจะใช้ควบคุม

สร้าง AnimatedSprite ของ “walk”

สร้าง AnimatedSprite ของ “jump”

คำสั่งนั้นก็คือการแก้ไข player.gd จากบทความก่อนๆ โดยเพิ่มบางส่วนเข้าไปคือ:

เพิ่มแรงกระโดด เป็น Constant ชื่อว่า JUMP_FORCE เป็น 20.0 เพราะต้องเป็น float

ใส่ค่าแรงดึงดูดของโลกเข้าไปใน func _process(delta) เพื่อให้ตัวละครตกลงไปตามแรงดึงดูดโลกที่ 10 (แกน Y)

เพิ่ม Input ของ ui_up หรือกด ขึ้นเพื่อกระโดด เข้าไปใน player.gd ส่วนท้ายก่อนปิด pass

โดยระหว่างกระโดดให้เล่น AnimatedSprite ว่า “jump” ตามที่เราตั้งชื่อ

ดังนั้น Code ทั้งหมดจะเป็นดังนี้:

ทดสอบกันหน่อยดีกว่า เริ่มจาก เดินไปมา แล้วดูว่า แรงดึงดูดใช้ได้ไหม

หลังจากนั้นลองทดสอบ การกระโดดให้กด ลูกศรขึ้นดู

จะเห็นว่าเกมของเราสมบูรณ์แล้วในส่วนของ Full Movement Character ลองทดสอบทำตามดูกันนะ

[บทต่อไป] : เขียนเกม 2D ด้วย Godot Engine จัดการ Camera2D และยิง Bullet

Comments

daydevthailand@gmail.com

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

Review overview
%d bloggers like this: