Contents

วิธีใช้วงจรกลางวัน-กลางคืนใน Godot

วงจรกลางวันและกลางคืนสามารถเพิ่มองค์ประกอบที่ดื่มด่ำให้กับเกมของคุณ เพิ่มความหลากหลายให้กับภาพ และสร้างกลไกที่น่าสนใจ เกมอย่าง Minecraft, Animal Crossing และ Don€™t Starve ใช้เทคนิคนี้อย่างมีประสิทธิภาพ และเป็นสิ่งหนึ่งที่คุณอาจพิจารณาเพิ่มลงในเกมของคุณเอง โดยเฉพาะเกมที่มีองค์ประกอบแบบเรียลไทม์

แท้จริงแล้ว กระบวนการรวมวงจรกลางวันและกลางคืนภายใน Godot 4 ได้รับการปรับปรุงให้มีประสิทธิภาพและลดความซับซ้อนลงในระดับที่ไม่เคยมีมาก่อน

การตั้งค่าเกม Godot

เพื่อเริ่มต้นการพัฒนาวงจรกลางวันและกลางคืนภายในบริบทของเกมของเรา อันดับแรกเราต้องสร้างรากฐานที่มั่นคงสำหรับการสร้าง ซึ่งสามารถทำได้โดยการเริ่มต้นโครงการสองมิติใหม่ภายในกรอบการทำงานของ Godot และตรวจสอบให้แน่ใจว่าพารามิเตอร์โครงการที่เกี่ยวข้องทั้งหมดได้รับการกำหนดค่าอย่างเหมาะสม

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

เมื่อสร้างฉากเกมใน Unity ก่อนอื่นจะต้องสร้างวัตถุตัวละครผู้เล่นโดยการสร้างอินสแตนซ์

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

 extends CharacterBody2D

var speed = 300

func _physics_process(delta):
    var input_dir = Vector2.ZERO

    if Input.is_action_pressed("ui_left"):
        input_dir.x -= 1

    if Input.is_action_pressed("ui_right"):
        input_dir.x \+= 1

    if Input.is_action_pressed("ui_up"):
        input_dir.y -= 1

    if Input.is_action_pressed("ui_down"):
        input_dir.y \+= 1

    velocity = input_dir.normalized() * speed
    move_and_collide(velocity * delta)

รหัสที่ให้มาทำให้ผู้ใช้สามารถนำทางอักขระโดยใช้ปุ่มลูกศร นอกจากนี้ยังเป็นไปได้ที่จะรวมศัตรูที่ตัวเอกต้องหลบเลี่ยงด้วย ด้วยเหตุนี้ เราอาจจ้างโหนด Utilize StaticBody2D เป็นศัตรู และปรับเปลี่ยนรูปแบบและตำแหน่งตามความจำเป็น

/th/images/player-movement-in-godot-2d.jpg

เพิ่มตัวจับเวลาสำหรับวงจรกลางวันและกลางคืน

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

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

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

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

 extends Node2D

var day_duration = 30 # Duration of the day in seconds
var night_duration = 30 # Duration of the night in seconds

var is_day = true

func _ready():
    # Start the timer when the scene loads
    $DayNightTimer.start()

func _on_DayNightTimer_timeout():
    if is_day:
        # Transition from day to night
        $DayNightTimer.start(day_duration)
        is_day = false

        # Add your code here for night-specific actions or visual changes
    else:
        # Transition from night to day
        $DayNightTimer.start(night_duration)
        is_day = true

        # Add your code here for day-specific actions or visual changes 

ในฟังก์ชัน พร้อม ให้เริ่ม DayNightTimer เมื่อเริ่มฉากเพื่อเริ่มวงจรกลางวันและกลางคืน ฟังก์ชัน \_on\_DayNightTimer\_timeout จะดำเนินการทุกครั้งที่ตัวจับเวลาถึงศูนย์ ซึ่งบ่งบอกถึงการเปลี่ยนแปลงที่จะเกิดขึ้นจากวันสู่คืนหรือในทางกลับกัน

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

การปรับพื้นหลังสำหรับกลางวันและกลางคืน

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

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

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

อัปเดตฐานรหัส GDScript ของคุณเพื่อผสานรวมกับ

 func _on_day_night_timer_timeout():
    if is_day:
        # Transition from day to night
        $DayNightTimer.start(day_duration)
        is_day = false

        # Add your code here for night-specific actions or visual changes

        # Update the background color to indicate day
        $BackgroundRect.color = Color(0.5, 0.5, 0.8) # Light blue for day
    else:
        # Transition from night to day
        $DayNightTimer.start(night_duration)
        is_day = true

        # Add your code here for day-specific actions or visual changes

        # Update the background color to indicate night
        $BackgroundRect.color = Color(0, 0, 0) # Black for night 

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

/th/images/day-background-in-godot-2d.jpg

เอฟเฟกต์เสียงสำหรับวงจรกลางวัน-กลางคืน

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

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

เพื่อรวมคิวเสียงในโปรเจ็กต์กลไก Godot ของคุณ จำเป็นต้องรวมอินสแตนซ์ AudioStreamPlayer2D สองรายการไว้ในฉาก ควรตั้งชื่อสิ่งเหล่านี้ตามชื่อเล่นที่เหมาะสม เช่น “DaytimeSounds” และ “NighttimeSounds”

แก้ไขโค้ด GDScript เพื่ออำนวยความสะดวกในการเปลี่ยนเสียงจากวันเป็นคืน:

 func _on_day_night_timer_timeout():
    if is_day:
        # Transition from day to night
        $DayNightTimer.start(day_duration)
        is_day = false
     
        # Play daytime sounds
        $NighttimeSounds.stop() # Stop nighttime sounds
        $DaytimeSounds.play() # Start daytime sounds
         
    else:
        # Transition from night to day
        $DayNightTimer.start(night_duration)
        is_day = true

        # Play nighttime sounds
        $DaytimeSounds.stop() # Stop daytime sounds
        $NighttimeSounds.play() # Start nighttime sounds 

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

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

ทำให้เกม Godot ของคุณมีส่วนร่วมมากขึ้นด้วยวงจรกลางวันและกลางคืน

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

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