Contents

วิธีสร้างระบบกล้องสำหรับเกม 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)

ด้วยการใช้การใช้งานนี้ ตัวละครอวาตาร์จะสามารถนำทางไปยังแกนต่างๆ ได้หลายแกน และจะโต้ตอบกับรากฐานที่เผชิญหน้าอยู่

/th/images/simple-godot-game-1-1.jpg

การติดตั้งระบบติดตามกล้อง

ในการใช้กล้องที่ติดตามการเคลื่อนไหวของตัวละครแบบเรียลไทม์ เราจำเป็นต้องเพิ่มองค์ประกอบ 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” ให้สอดคล้องกับขนาดของสภาพแวดล้อมการเล่นเกมของคุณ ทำให้สคริปต์นี้สามารถจำกัดมุมมองของกล้องภายในขอบเขตที่กำหนด ส่งผลให้ผู้ใช้ได้รับประสบการณ์การเล่นที่กระจายตัวและเข้มข้น

การจัดการการซูมและปรับขนาดกล้อง

การซูมและมาตราส่วนแบบไดนามิกสามารถนำไปสู่ประสบการณ์การเล่นเกมที่น่าดึงดูดได้อย่างมีประสิทธิภาพ โดยอนุญาตให้มีการปรับแต่งที่แม่นยำซึ่งเน้นช่วงเวลาสำคัญในเกมเพลย์ ตัวอย่างดังกล่าวอาจรวมถึงการมุ่งเน้นไปที่การกระทำที่สำคัญของตัวเอกด้วยภาพระยะใกล้หรือขยายมุมมองเพื่อแสดงศัตรูที่น่าเกรงขามหรือทิวทัศน์อันน่าทึ่งของสภาพแวดล้อมเสมือนจริง

/th/images/oriandthewillofthewisps_standard_2560x1440_01.jpg เครดิตรูปภาพ: 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 ในแต่ละแกนทำให้ได้มุมมองที่ไกลขึ้น

/th/images/camera-zoom-in-godot-game.jpg

โดยทั่วไป ขอแนะนำให้คุณรักษาความสม่ำเสมอของอัตราส่วนกว้างยาวโดยรักษาค่าที่สอดคล้องกันไว้บนแกนทั้งสอง อย่างไรก็ตาม เราอาจสำรวจการเรียงสับเปลี่ยนต่างๆ เพื่อให้ได้ผลลัพธ์และเอฟเฟ็กต์ภาพที่โดดเด่น

รวมถึงคุณสมบัติเพิ่มเติม

การรวมคุณสมบัติขั้นสูงต่างๆ เข้ากับการออกแบบระบบกล้องของคุณมีศักยภาพในการปรับปรุงประสบการณ์การเล่นเกมโดยรวมได้อย่างมาก

กล้องสั่น

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

เพื่อรวมการทำงานของการสร้างเอฟเฟ็กต์"เขย่า"ไว้ในเอ็นจิ้นเกมที่เรียกว่า Godot เราอาจสร้างฟังก์ชัน"เขย่า ()“แบบกำหนดเอง ซึ่งช่วยให้สามารถจัดการพารามิเตอร์ต่างๆ เช่น ระยะเวลาและความเข้มตามค่าเฉพาะใน-เกมที่เกิดขึ้น

เอฟเฟกต์เสียงที่เชื่อมโยงกับกล้อง

การใช้สัญญาณเสียงมีส่วนอย่างมากในการสร้างประสบการณ์การเล่นเกมที่ชวนดื่มด่ำ โดยกระตุ้นการรับรู้เชิงพื้นที่และความรู้สึกเกี่ยวกับการเคลื่อนไหว เอฟเฟ็กต์ดังกล่าวอาจมีตั้งแต่การใช้องค์ประกอบเสียงแบบมินิมอล เช่น การรวมเสียง"swoosh"ระหว่างการเคลื่อนกล้องเร็วๆ ไปจนถึงการปรับสภาพแวดล้อมแวดล้อมที่ซับซ้อนยิ่งขึ้น โดยที่ระดับเสียงหรือระดับเสียงของดนตรีประกอบและภาพเสียงจะถูกปรับตามตำแหน่งของกล้อง หรือระดับกำลังขยาย

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

แสงแบบไดนามิก

เอฟเฟกต์แสงแบบไดนามิกในวิดีโอเกมสามารถปรับเปลี่ยนได้ตามการเคลื่อนไหวของกล้อง สภาพแวดล้อมที่เปลี่ยนแปลงและการเน้นย้ำในบางพื้นที่หรือบางวัตถุสามารถเน้นผ่านการเปลี่ยนแปลงของแสงในขณะที่กล้องเคลื่อนผ่านภูมิทัศน์เสมือนจริง

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

เอฟเฟกต์การเปลี่ยนกล้อง

มีหลายวิธีในการสร้างการเปลี่ยนภาพที่ไร้รอยต่อระหว่างมุมกล้องหลายมุม รวมถึงการแก้ไขทันทีที่เรียกว่า"การตัด"ซึ่งมุมมองภาพจะเปลี่ยนจากกล้องหนึ่งไปยังอีกกล้องหนึ่งอย่างกะทันหัน หรือการเปลี่ยนแปลงแบบค่อยเป็นค่อยไปที่เรียกว่า"จาง"ในระหว่าง ซึ่งภาพที่ผสานอย่างละเอียดจากมุมมองของกล้องหนึ่งไปยังอีกมุมหนึ่ง

อาจใช้เทคนิคขั้นสูงเพิ่มเติม เช่น การเช็ด สไลด์ และไอริสผ่านการรวมโค้ดเสริมและแอนิเมชันเพื่อปรับปรุงการดำเนินการภายในโครงการ

แนวทางปฏิบัติที่ดีที่สุดสำหรับการเพิ่มระบบกล้อง

การรวมระบบกล้องเข้ากับวิดีโอเกมเป็นสิ่งสำคัญที่สามารถส่งผลต่อประสบการณ์ของผู้ใช้ได้อย่างมาก เพื่อรับประกันประสิทธิภาพและการดื่มด่ำที่ดีที่สุด สิ่งสำคัญคือต้องปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเมื่อใช้งานคุณลักษณะนี้

หลีกเลี่ยงการเคลื่อนไหวของกล้องอย่างกะทันหัน

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

จำกัด การสั่นของกล้อง

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

ทดสอบระดับการซูมที่แตกต่างกัน

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

พิจารณาขอบเขตของกล้องอย่างรอบคอบ

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

จัดลำดับความสำคัญของประสบการณ์ผู้เล่น

การเพิ่มประสิทธิภาพของระบบกล้องเป็นสิ่งสำคัญยิ่งในการยกระดับประสบการณ์โดยรวมของผู้เล่นโดยนำเสนอมุมมองภาพที่เหมาะสมที่สุด เน้นย้ำเหตุการณ์สำคัญ และอำนวยความสะดวกในการนำทางภายในสภาพแวดล้อมการเล่นเกม

ทำให้เกม Godot มีส่วนร่วมมากขึ้นด้วยระบบกล้อง

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

ด้วยการจัดการข้อมูลภาพที่แสดงต่อผู้เล่นและจังหวะเวลาอย่างรอบคอบ ผู้ใช้สามารถกำหนดความก้าวหน้าของพวกเขาได้อย่างมีประสิทธิภาพทั่วทั้งสภาพแวดล้อมของเกม ในขณะที่เพิ่มความตื่นเต้นโดยรวมและการโต้ตอบของประสบการณ์