วิธีสร้างระบบกล้องสำหรับเกม 2 มิติใน Godot
กลไกกล้องที่ประดิษฐ์ขึ้นอย่างพิถีพิถันมีศักยภาพที่จะทำให้เกมเมอร์ดื่มด่ำกับสภาพแวดล้อมเสมือนจริงและมอบการรับรู้ที่ดีขึ้นเกี่ยวกับสภาพแวดล้อมของพวกเขา ด้วยความสามารถนี้ กล้องทำหน้าที่เป็นส่วนเสริมของมุมมองภาพของผู้เล่น อำนวยความสะดวกในการนำทางและการโต้ตอบตลอดประสบการณ์การเล่นเกม
การใช้กลไกกล้องภายในขอบเขตของ Godot นำเสนอโซลูชันที่ใช้งานง่ายและมีประสิทธิภาพสำหรับการจับภาพระหว่างการเล่นเกม กระบวนการเกี่ยวข้องกับการสั่งให้กล้องติดตามการเคลื่อนไหวของผู้เล่นอย่างง่ายดาย จำกัดเส้นทางการเคลื่อนที่ให้อยู่ในขอบเขตของสภาพแวดล้อมการเล่นเกม และใช้การปรับแบบไดนามิก เช่น การซูมและการปรับขนาดที่ตอบสนองต่อเหตุการณ์ภายในเกม
การสร้างเกมอย่างง่าย
ในการเริ่มกระบวนการนี้ จำเป็นต้องสร้างสภาพแวดล้อมการเล่นเกมแบบสองมิติภายใน Godot Game Engine เช่นเดียวกับการสร้างตัวละครที่จะมองเห็นได้ด้วยความสามารถในการติดตามของกล้อง
ในการสร้างสภาพแวดล้อมของเกมแบบสองมิติ จำเป็นต้องสร้างฉาก 2 มิติใหม่และแนะนำวัตถุ CharacterBody2D ภายในการตั้งค่านี้ หน้าที่ของเอนทิตี CharacterBody2D นี้จะเป็นตัวแทนของอวาตาร์หรือตัวละครของผู้เล่นในโลกเสมือนจริง เพื่อให้บรรลุวัตถุประสงค์นี้ เราต้องฝังส่วนประกอบ CollisionShape2D ภายใน CharacterBody2D จำเป็นอย่างยิ่งที่เราจะต้องระบุรูปร่างของ CollisionShape2D ให้เป็น RectangleShape2D ซึ่งจะทำให้ตัวละครของผู้เล่นมีตัวตนที่จับต้องได้ภายในพื้นที่เกม โดยอนุญาตให้มีปฏิสัมพันธ์ระหว่างผู้เล่นกับวัตถุอื่น ๆ ที่อยู่ในสภาพแวดล้อม
ซอร์สโค้ดที่ใช้ในเอกสารเผยแพร่นี้สามารถเข้าถึงได้ผ่านที่เก็บ GitHub ซึ่งทำหน้าที่เป็นแพลตฟอร์มแบบเปิดสำหรับผู้ใช้ที่จะใช้ดุลยพินิจภายใต้เงื่อนไขของใบอนุญาต MIT
MonoBehaviour{public float moveSpeed =5f;private Rigidbody2D rb;private BoxCollider2D boxCollider;private SpriteRenderer spriteRenderer;private Image img;private Vector3 targetPos;private bool isGrounded=false;private bool canDoubleJump=true;void Start(){rb=GetComponent () ;boxCollider=GetComponent ();spriteRenderer=GetComponent ();img=
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()
if Input.is_action_pressed('ui_right'):
velocity.x \+= 1
if Input.is_action_pressed('ui_left'):
velocity.x -= 1
if Input.is_action_pressed('ui_down'):
velocity.y \+= 1
if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
ด้วยการใช้การใช้งานนี้ ตัวละครอวาตาร์จะสามารถนำทางไปยังแกนต่างๆ ได้หลายแกน และจะโต้ตอบกับรากฐานที่เผชิญหน้าอยู่
การติดตั้งระบบติดตามกล้อง
ในการใช้กล้องที่ติดตามการเคลื่อนไหวของตัวละครแบบเรียลไทม์ เราจำเป็นต้องเพิ่มองค์ประกอบ Camera2D
เป็นส่วนย่อยของ CharacterBody2D
ของเรา เมื่อทำเช่นนั้น กล้องจะปรับตำแหน่งและทิศทางโดยอัตโนมัติเพื่อให้ตรงกับการเคลื่อนไหวของตัวละคร นอกจากนี้ การเปิดใช้งานตัวเลือก ปรับตำแหน่งให้เรียบ
สำหรับ Camera2D
อาจเป็นประโยชน์ ซึ่งสามารถช่วยปรับปรุงความนุ่มนวลของการเคลื่อนไหวของกล้องระหว่างการเล่นเกม
$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true
การใช้ขอบเขตและข้อจำกัดของกล้อง
เมื่อใช้งานวิดีโอเกม สิ่งสำคัญคือต้องควบคุมมุมมองของผู้เล่นเพื่อให้แน่ใจว่ามองเห็นเฉพาะเนื้อหาที่เกี่ยวข้องในโลกของเกมเท่านั้น การไม่ทำเช่นนั้นอาจส่งผลให้เกิดการเปิดเผยพื้นที่เกินขอบเขตของสภาพแวดล้อมเกมโดยไม่ได้ตั้งใจ ซึ่งอาจรวมถึงช่องว่างหรือส่วนที่ไม่สมบูรณ์
Godot นำเสนอวิธีการที่สะดวกสำหรับการกำหนดขอบเขตของการเคลื่อนไหวของกล้องและตำแหน่งของกล้องภายในขอบเขตของโลกของเกม ทำให้สามารถควบคุมมุมมองของผู้เล่นได้อย่างแม่นยำและแม่นยำยิ่งขึ้น
คลาส Camera2D มีพารามิเตอร์หลายตัวภายในแอตทริบิวต์ที่สร้างขอบเขตของมุมมองภาพในพื้นที่สองมิติ พารามิเตอร์เหล่านี้รวมถึงขีดจำกัดสำหรับการเคลื่อนที่ไปทางซ้ายและขวา ตลอดจนการเคลื่อนไหวบนและล่าง ซึ่งแสดงโดยตัวแปร limit\_left, limit\_top, limit\_right และ limit\_bottom ตามลำดับ ค่าเฉพาะที่กำหนดให้กับพารามิเตอร์เหล่านี้อาจปรับเปลี่ยนตามขนาดของสภาพแวดล้อมเสมือนจริงภายในเกม
$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height
การปรับตัวแปร “your\_game\_area\_width” และ “your\_game\_area\_height” ให้สอดคล้องกับขนาดของสภาพแวดล้อมการเล่นเกมของคุณ ทำให้สคริปต์นี้สามารถจำกัดมุมมองของกล้องภายในขอบเขตที่กำหนด ส่งผลให้ผู้ใช้ได้รับประสบการณ์การเล่นที่กระจายตัวและเข้มข้น
การจัดการการซูมและปรับขนาดกล้อง
การซูมและมาตราส่วนแบบไดนามิกสามารถนำไปสู่ประสบการณ์การเล่นเกมที่น่าดึงดูดได้อย่างมีประสิทธิภาพ โดยอนุญาตให้มีการปรับแต่งที่แม่นยำซึ่งเน้นช่วงเวลาสำคัญในเกมเพลย์ ตัวอย่างดังกล่าวอาจรวมถึงการมุ่งเน้นไปที่การกระทำที่สำคัญของตัวเอกด้วยภาพระยะใกล้หรือขยายมุมมองเพื่อแสดงศัตรูที่น่าเกรงขามหรือทิวทัศน์อันน่าทึ่งของสภาพแวดล้อมเสมือนจริง
เครดิตรูปภาพ: Xbox Game Studios/orithegame.com
การใช้การขยายและลดขนาดในมุมมองภาพนั้นอำนวยความสะดวกโดยการใช้แอตทริบิวต์"ซูม"ที่เชื่อมโยงกับโหนด"Camera2D"ภายใน Godot แอตทริบิวต์ดังกล่าวมีลักษณะเป็น Vector2 ซึ่งค่าเริ่มต้นอยู่ที่ (1, 1) ซึ่งสอดคล้องกับระดับการขยายเริ่มต้น การเพิ่มค่านี้จะส่งผลให้ขอบเขตการมองเห็นที่สังเกตได้กว้างขึ้น ซึ่งจะเป็นการลดขนาดที่มองเห็นได้ขององค์ประกอบที่ปรากฎ ในทางกลับกัน การลดค่าจะทำให้เกิดข้อจำกัดของสเปกตรัมที่แสดง ทำให้รายการที่แสดงขยายขนาด
ในการซูมเข้า คุณสามารถใช้:
$Camera2D.zoom = Vector2(0.7, 0.7)
และหากต้องการรีเซ็ตการซูม ให้ใช้:
$Camera2D.zoom = Vector2(1, 1)
พารามิเตอร์ที่กำหนดให้กับฟังก์ชัน Vector2 กำหนดระดับการขยายตามแกน x และแกน y คู่ของพิกัดที่แสดงกำลังขยาย 0.7 ในแต่ละแกนทำให้ได้มุมมองที่ใกล้ขึ้น ในขณะที่กำลังขยาย 1.5 ในแต่ละแกนทำให้ได้มุมมองที่ไกลขึ้น
โดยทั่วไป ขอแนะนำให้คุณรักษาความสม่ำเสมอของอัตราส่วนกว้างยาวโดยรักษาค่าที่สอดคล้องกันไว้บนแกนทั้งสอง อย่างไรก็ตาม เราอาจสำรวจการเรียงสับเปลี่ยนต่างๆ เพื่อให้ได้ผลลัพธ์และเอฟเฟ็กต์ภาพที่โดดเด่น
รวมถึงคุณสมบัติเพิ่มเติม
การรวมคุณสมบัติขั้นสูงต่างๆ เข้ากับการออกแบบระบบกล้องของคุณมีศักยภาพในการปรับปรุงประสบการณ์การเล่นเกมโดยรวมได้อย่างมาก
กล้องสั่น
ในวิดีโอเกมจำนวนมาก โดยเฉพาะอย่างยิ่งเกมประเภทแพลตฟอร์ม เทคนิคที่แพร่หลายคือการใช้กล้องสั่น เอฟเฟ็กต์นี้มักใช้เพื่อกระตุ้นความรู้สึกของผลกระทบและความรุนแรงในระหว่างเหตุการณ์สำคัญภายในเกม เช่น การระเบิดหรือการกระทำของตัวละครที่ทรงพลัง
เพื่อรวมการทำงานของการสร้างเอฟเฟ็กต์"เขย่า"ไว้ในเอ็นจิ้นเกมที่เรียกว่า Godot เราอาจสร้างฟังก์ชัน"เขย่า ()“แบบกำหนดเอง ซึ่งช่วยให้สามารถจัดการพารามิเตอร์ต่างๆ เช่น ระยะเวลาและความเข้มตามค่าเฉพาะใน-เกมที่เกิดขึ้น
เอฟเฟกต์เสียงที่เชื่อมโยงกับกล้อง
การใช้สัญญาณเสียงมีส่วนอย่างมากในการสร้างประสบการณ์การเล่นเกมที่ชวนดื่มด่ำ โดยกระตุ้นการรับรู้เชิงพื้นที่และความรู้สึกเกี่ยวกับการเคลื่อนไหว เอฟเฟ็กต์ดังกล่าวอาจมีตั้งแต่การใช้องค์ประกอบเสียงแบบมินิมอล เช่น การรวมเสียง"swoosh"ระหว่างการเคลื่อนกล้องเร็วๆ ไปจนถึงการปรับสภาพแวดล้อมแวดล้อมที่ซับซ้อนยิ่งขึ้น โดยที่ระดับเสียงหรือระดับเสียงของดนตรีประกอบและภาพเสียงจะถูกปรับตามตำแหน่งของกล้อง หรือระดับกำลังขยาย
วิธีหนึ่งที่เป็นไปได้คือการปรับระดับเสียงตามการเปลี่ยนแปลงในมุมมองภาพ ตัวอย่างเช่น การลดระดับเสียงของแทร็กขณะที่กล้องเคลื่อนออกจากวัตถุ อาจสามารถสร้างภาพลวงตาของความลึกและระยะห่างเชิงพื้นที่ได้
แสงแบบไดนามิก
เอฟเฟกต์แสงแบบไดนามิกในวิดีโอเกมสามารถปรับเปลี่ยนได้ตามการเคลื่อนไหวของกล้อง สภาพแวดล้อมที่เปลี่ยนแปลงและการเน้นย้ำในบางพื้นที่หรือบางวัตถุสามารถเน้นผ่านการเปลี่ยนแปลงของแสงในขณะที่กล้องเคลื่อนผ่านภูมิทัศน์เสมือนจริง
วิธีที่เป็นไปได้ในการปรับปรุงองค์ประกอบภาพของภาพนี้คือการหรี่แสงในบริเวณโดยรอบขณะที่กล้องเคลื่อนลึกเข้าไปในพื้นที่โพรง หรือทำให้วัตถุสำคัญสว่างขึ้นโดยใช้ลำแสงที่โฟกัส
เอฟเฟกต์การเปลี่ยนกล้อง
มีหลายวิธีในการสร้างการเปลี่ยนภาพที่ไร้รอยต่อระหว่างมุมกล้องหลายมุม รวมถึงการแก้ไขทันทีที่เรียกว่า"การตัด"ซึ่งมุมมองภาพจะเปลี่ยนจากกล้องหนึ่งไปยังอีกกล้องหนึ่งอย่างกะทันหัน หรือการเปลี่ยนแปลงแบบค่อยเป็นค่อยไปที่เรียกว่า"จาง"ในระหว่าง ซึ่งภาพที่ผสานอย่างละเอียดจากมุมมองของกล้องหนึ่งไปยังอีกมุมหนึ่ง
อาจใช้เทคนิคขั้นสูงเพิ่มเติม เช่น การเช็ด สไลด์ และไอริสผ่านการรวมโค้ดเสริมและแอนิเมชันเพื่อปรับปรุงการดำเนินการภายในโครงการ
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเพิ่มระบบกล้อง
การรวมระบบกล้องเข้ากับวิดีโอเกมเป็นสิ่งสำคัญที่สามารถส่งผลต่อประสบการณ์ของผู้ใช้ได้อย่างมาก เพื่อรับประกันประสิทธิภาพและการดื่มด่ำที่ดีที่สุด สิ่งสำคัญคือต้องปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเมื่อใช้งานคุณลักษณะนี้
หลีกเลี่ยงการเคลื่อนไหวของกล้องอย่างกะทันหัน
การเปลี่ยนผ่านอย่างราบรื่นระหว่างมุมมองของกล้องต่างๆ เป็นสิ่งสำคัญในการรักษาความรู้สึกของผู้เล่นในประสบการณ์การเล่นเกม การเปลี่ยนแปลงอย่างกะทันหันในมุมมองอาจทำให้เกิดความสับสนหรือเสียสมาธิ อาจรบกวนการเล่นเกม ดังนั้นจึงแนะนำให้จัดลำดับความสำคัญของการปรับตำแหน่งกล้องอย่างราบรื่นและค่อยเป็นค่อยไปเพื่อหลีกเลี่ยงการหยุดชะงักที่อาจขัดขวางความเพลิดเพลินโดยรวมของเกม
จำกัด การสั่นของกล้อง
สิ่งสำคัญคือต้องใช้ความยับยั้งชั่งใจเมื่อรวมการสั่นของกล้องในวิดีโอเกม เนื่องจากการใช้เทคนิคนี้มากเกินไปอาจทำให้ความสามารถของผู้เล่นในการติดตามการกระทำลดลงและส่งผลให้เกิดประสบการณ์การเล่นเกมที่ไม่พึงประสงค์ ดังนั้น ขอแนะนำให้ใช้การสั่นของกล้องอย่างมีวิจารณญาณและพอเหมาะเพื่อให้ได้เอฟเฟกต์ที่ต้องการ ในขณะที่ยังคงความสบายในการเล่นเกมที่ดีที่สุดสำหรับผู้เล่น
ทดสอบระดับการซูมที่แตกต่างกัน
การปรับขอบเขตการมองเห็นในวิดีโอเกมกีฬาอาจแตกต่างกันไปขึ้นอยู่กับปัจจัยต่างๆ เช่น เกมหรือสถานการณ์เฉพาะที่กำลังเล่น สิ่งสำคัญคือต้องทำการทดสอบอย่างละเอียดเพื่อกำหนดระดับการซูมที่เหมาะสมที่สุดสำหรับแต่ละสถานการณ์
พิจารณาขอบเขตของกล้องอย่างรอบคอบ
เมื่อกำหนดตำแหน่งกล้องในระดับหนึ่ง สิ่งสำคัญคือต้องพิจารณาการออกแบบโดยรวมและประสบการณ์ที่ตั้งใจไว้ ต้องพิจารณาอย่างรอบคอบเพื่อให้แน่ใจว่าผู้เล่นยังคงจมอยู่ในโลกของเกมโดยไม่สามารถรับรู้เกินขอบเขตหรือมองข้ามรายละเอียดที่สำคัญที่อาจมีอยู่นอกกรอบ
จัดลำดับความสำคัญของประสบการณ์ผู้เล่น
การเพิ่มประสิทธิภาพของระบบกล้องเป็นสิ่งสำคัญยิ่งในการยกระดับประสบการณ์โดยรวมของผู้เล่นโดยนำเสนอมุมมองภาพที่เหมาะสมที่สุด เน้นย้ำเหตุการณ์สำคัญ และอำนวยความสะดวกในการนำทางภายในสภาพแวดล้อมการเล่นเกม
ทำให้เกม Godot มีส่วนร่วมมากขึ้นด้วยระบบกล้อง
ระบบกล้องที่ทำงานได้อย่างมีประสิทธิภาพมีความสามารถในการยกระดับคุณภาพทั่วไปของประสบการณ์เกมด้วยการเน้นฉากแอ็คชั่น เสริมองค์ประกอบการเล่าเรื่อง และส่งเสริมสภาพแวดล้อมที่สมจริงยิ่งขึ้นสำหรับผู้เล่น
ด้วยการจัดการข้อมูลภาพที่แสดงต่อผู้เล่นและจังหวะเวลาอย่างรอบคอบ ผู้ใช้สามารถกำหนดความก้าวหน้าของพวกเขาได้อย่างมีประสิทธิภาพทั่วทั้งสภาพแวดล้อมของเกม ในขณะที่เพิ่มความตื่นเต้นโดยรวมและการโต้ตอบของประสบการณ์