اتمسفر و مکانیک های گیم پلی منحصر به فرد را با طلوع و سقوط خورشید اضافه کنید.
چرخه روز و شب می تواند یک عنصر غوطه ور به بازی های شما بیافزاید، به جلوه های بصری تنوع ببخشد و مکانیک های جالبی ایجاد کند. بازیهایی مانند Minecraft، Animal Crossing و Don’t Starve از این تکنیک بهطور موثر استفاده میکنند، و میتوانید آن را به بازیهای خود اضافه کنید، بهویژه آنهایی که دارای عنصر زمان واقعی هستند.
خوشبختانه، در گودو 4، دستیابی به چرخه روز و شب راحت تر از همیشه است.
راه اندازی بازی گودو
قبل از فرو رفتن در اجرای چرخه روز-شب، پایه و اساس بازی خود را تنظیم کنید. با ایجاد یک پروژه دو بعدی جدید در Godot 4 شروع کنید. پروژه خود را با تنظیمات پروژه لازم تنظیم کنید.
کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.
حالا یک شخصیت بازیکن بسازید. در صحنه خود، CharacterBody2D را اضافه کنید. داخل آن یک CollisionShape2D با شکل مستطیل و یک Sprite2D اضافه کنید. این کاراکتر شما را به صورت بصری نشان می دهد.
برای اینکه پخش کننده بتواند حرکت کند، می توانید از کد 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)
این کد به بازیکن اجازه می دهد با استفاده از کلیدهای جهت دار به چپ، راست، بالا و پایین حرکت کند. شما همچنین می توانید چند دشمن را به بازیکن خود اضافه کنید تا از آنها طفره رود. از گره های StaticBody2D برای این دشمنان استفاده کنید و شکل و موقعیت آنها را بر اساس آن تنظیم کنید.
یک تایمر برای چرخه روز و شب اضافه کنید
برای ایجاد یک چرخه روز و شب، به یک تایمر نیاز دارید که به طور مداوم و متناوب بین فازهای روز و شب کار کند. این تایمر وظیفه ردیابی گذر زمان در بازی شما را بر عهده خواهد داشت.
یک گره تایمر به صحنه گودو خود اضافه کنید. می توانید این کار را با کلیک راست در پانل Scene، انتخاب Add Node و سپس جستجوی Timer در کتابخانه گره انجام دهید.
برای وضوح، گره تایمر را به چیزی معنادار مانند DayNightTimer تغییر نام دهید. ویژگی های گره تایمر را در پنل Inspector پیکربندی کنید. به طور خاص، ویژگی Wait Time را روی 0 قرار دهید (این تاخیر اولیه قبل از شروع تایمر است) و ویژگی 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
در تابع _ready، هنگام بارگیری صحنه، DayNightTimer را برای شروع چرخه روز و شب شروع کنید. تابع _on_DayNightTimer_timeout هر بار که تایمر به صفر برسد، اجرا می شود، یعنی زمانی که زمان انتقال بین روز و شب فرا می رسد.
با دنبال کردن این مراحل، یک تایمر عملکردی روز-شب خواهید داشت که بین روز و شب جابهجا میشود و به شما امکان میدهد عناصر گیمپلی پویا و تغییرات بصری را بر اساس زمان روز به بازی Godot خود اضافه کنید.
تطبیق پس زمینه برای روز و شب
برای تکمیل چرخه روز و شب خود، به راهی نیاز دارید که انتقال بین روز و شب را به صورت بصری نشان دهد. می توانید از یک گره ColorRect داخلی برای ایجاد پس زمینه مناسب برای روز و شب استفاده کنید. این رویکرد امکان انتقال نرمتر و کنترل بیشتر روی تصاویر را فراهم میکند.
در صحنه Godot خود، یک گره ColorRect اضافه کنید. این گره به عنوان پس زمینه شما عمل می کند که رنگ را برای نمایش روز و شب تغییر می دهد. گره ColorRect را به چیزی معنادار مانند BackgroundRect تغییر نام دهید. آن را به عنوان لایه پس زمینه قرار دهید، مطمئن شوید که کل نمای را پوشش می دهد.
در پنل Inspector، ویژگی Color را روی رنگ پسزمینه اولیه خود تنظیم کنید، که باید نمایانگر روز باشد. برای مثال، میتوانید از رنگ (0.5، 0.5، 0.8) برای آسمان آبی روشن در روز استفاده کنید.
اکنون کد GDScript خود را برای کار با گره ColorRect به روز کنید:
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 را به روز کنید تا زمان روز را منعکس کند. به عنوان مثال، هنگام انتقال به شب، آن را روی مشکی تنظیم کنید و یک پس زمینه تاریک ایجاد کنید. هنگام انتقال به روز، آن را روی آبی روشن قرار دهید.
جلوه های صوتی برای چرخه روز-شب
جلوه های صوتی می تواند نقش مهمی در تقویت غوطه وری و واقع گرایی چرخه روز و شب شما در گودو داشته باشد. آنها نشانه های شنیداری را برای بازیکنان فراهم می کنند و انتقال بین روز و شب را جذاب تر می کنند. شما به راحتی می توانید جلوه های صوتی را به بازی 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
زمانی که تایمر روز و شب تمام می شود، این کد بررسی می کند تا ببیند باید به کدام فاز منتقل شود و صداهای مناسب را برای مطابقت پخش می کند.
به راحتی می توانید جلوه های صوتی بدون حق نسخه برداری خود را سفارشی کنید تا با تم و فضای بازی خود مطابقت داشته باشد. همچنین میتوانید چندین آهنگ صوتی را لایهبندی کنید یا از جلوههای صوتی (Reverb، Echo، و غیره) برای ایجاد یک تجربه شنیداری غنیتر استفاده کنید.
بازی های گودو خود را با چرخه روز و شب جذاب تر کنید
اجرای یک چرخه روز و شب در بازی گودو شما می تواند به طور قابل توجهی غوطه وری و تعامل بازیکن را افزایش دهد. این به دنیای بازی شما عمق می بخشد، عناصر بازی پویا را معرفی می کند و امکان داستان گویی خلاقانه را فراهم می کند.
به یاد داشته باشید که چرخه روز و شب را با تم و مکانیک منحصر به فرد بازی خود تطبیق دهید و از آزمایش افکت های بصری و گیم پلی مختلف برای ایجاد یک تجربه بازی واقعاً فریبنده دریغ نکنید.