خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه ایجاد یک سیستم دوربین برای بازی های دو بعدی در گودو

بیاموزید که چگونه نمای بازی خود را با حرکات متحرک، بزرگ‌نمایی و مقیاس‌گذاری کنترل کنید.

یک سیستم دوربین خوب طراحی شده می تواند به غوطه ور شدن بازیکنان در دنیای بازی کمک کند و حس بهتری از مکان به شما بدهد. دوربین به عنوان چشم بازیکن عمل می کند و آنها را قادر می سازد تا با دنیای بازی حرکت کنند و با آن تعامل داشته باشند.

ایجاد یک سیستم دوربین در گودو ساده و در عین حال قدرتمند است. شما به راحتی می توانید دوربین را طوری تنظیم کنید که بازیکن را در اطراف دنبال کند، حرکات آن را به منطقه بازی محدود کنید، و حتی بر اساس رویدادهای بازی، زوم و مقیاس گذاری پویا را اضافه کنید.

ایجاد یک بازی ساده

قبل از شروع، باید یک دنیای بازی دو بعدی و یک شخصیت در موتور بازی Godot خود ایجاد کنید که دوربین بتواند آن را دنبال کند.

یک صحنه 2 بعدی جدید ایجاد کنید و یک گره CharacterBody2D اضافه کنید. این به عنوان شخصیت بازیکن ما عمل خواهد کرد. در داخل CharacterBody2D، یک CollisionShape2D اضافه کنید و شکل آن را روی RectangleShape2D قرار دهید تا حضور فیزیکی بازیکن در جهان فراهم شود.

کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.

همچنین در داخل CharacterBody2D، یک گره Sprite2D اضافه کنید و تصویر اسپرایت پخش کننده خود را به آن اختصاص دهید. یک اسکریپت جدید متصل به گره CharacterBody2D ایجاد کنید و کد زیر را اضافه کنید:

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

اجرای محدودیت ها و محدودیت های دوربین

اغلب مهم است که دید بازیکن را به منطقه بازی محدود کنید. با این حال، اگر این موضوع را به درستی مدیریت نکنید، دوربین ممکن است مناطقی را که خارج از محدوده بازی هستند را نشان دهد. اینها ممکن است شامل فضاها یا مناطق ناقص باشد.

مطلب مرتبط:   چگونه Python 3.12 به بهبود اشکال زدایی شما کمک می کند

گودو یک راه آسان برای تعیین محدودیت های دوربین و محدود کردن حرکات آن در منطقه بازی ارائه می دهد.

در ویژگی های گره 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 کنید. این اسکریپت به طور موثر دوربین را در محدوده مورد نظر محدود می کند و یک تجربه گیم پلی تمیز و متمرکز را برای بازیکن فراهم می کند.

مدیریت زوم و مقیاس دوربین

بزرگنمایی و مقیاس بندی پویا می تواند در ایجاد لحظات تاثیرگذار در بازی موثر باشد. به عنوان مثال، ممکن است بخواهید در طول یک اقدام قدرتمند، شخصیت بازیکن را بزرگنمایی کنید یا برای نشان دادن یک دشمن بزرگ یا یک نمای پانوراما از دنیای بازی، بزرگنمایی کنید.

صحنه‌ای از بازی Ori and the Will of the Wisps که در آن یک عنکبوت غول‌پیکر با تکه‌های سبز درخشان بر روی بدنش، بر روی شخصیت اصلی که در مقایسه بسیار کوچک است، خودنمایی می‌کند.

گودو با ویژگی بزرگنمایی گره Camera2D، بزرگنمایی و مقیاس بندی را آسان می کند. این ویژگی یک Vector2 است که (1، 1) سطح بزرگنمایی پیش‌فرض است. مقادیر بالاتر کوچک‌نمایی می‌کنند و اشیاء مشاهده‌شده را کوچک‌تر نشان می‌دهند، در حالی که مقادیر پایین‌تر بزرگ‌نمایی می‌کنند و اشیا را بزرگ‌تر نشان می‌دهند.

برای بزرگنمایی، می توانید از:

$Camera2D.zoom = Vector2(0.7, 0.7)

و برای تنظیم مجدد بزرگنمایی، از:

$Camera2D.zoom = Vector2(1, 1)

مقادیری که به Vector2() ارسال می کنید، سطح بزرگنمایی محورهای X و Y را تعیین می کند. مقدار زوم (0.7، 0.7) به این معنی است که دوربین بزرگنمایی می کند، در حالی که مقدار (1.5، 1.5) دوربین را کوچکنمایی می کند.

دوربین در بازی Godot با بازیکن زوم کرده است

برای حفظ نسبت ابعاد، معمولاً باید مقدار یکسانی را برای هر دو محور حفظ کنید، اما می‌توانید مقادیر متفاوتی را برای دستیابی به جلوه‌های منحصربه‌فرد آزمایش کنید.

مطلب مرتبط:   رویه های ذخیره شده SQL چیست و چگونه آنها را ایجاد می کنید؟

از جمله ویژگی های اضافی

هنگام ایجاد یک سیستم دوربین برای بازی خود، ویژگی های اضافی متعددی وجود دارد که می توانید برای بهبود تجربه استفاده کنید.

لرزش دوربین

یک افکت رایج که در بسیاری از بازی ها، به ویژه بازی های پلتفرمر استفاده می شود، لرزش دوربین است. این معمولاً برای انتقال تأثیر یا شدت در لحظات خاصی از بازی مانند انفجار یا حمله قدرتمند یک شخصیت استفاده می شود.

با ایجاد تابع shake() به راحتی می توانید این تابع را به گودو اضافه کنید. می توانید مدت و شدت اثر لرزش را با توجه به رویداد خاص درون بازی مشخص کنید.

جلوه های صوتی مرتبط با دوربین

صداها می توانند حس مکان و حرکت را در یک بازی بسیار تقویت کنند. این کار می تواند به سادگی پخش یک افکت صدای swoosh در زمانی که دوربین به سرعت حرکت می کند یا حرکت می کند، یا به اندازه تغییر میزان صدا یا زیر و بم صداهای محیط یا آهنگ های موسیقی بر اساس موقعیت مکانی دوربین یا سطح زوم پیچیده است.

به عنوان مثال، ممکن است بخواهید صدای یک آهنگ را با بزرگنمایی دوربین کاهش دهید تا حس فاصله را ایجاد کنید.

نورپردازی دینامیک

همچنین می توانید جلوه های نور پویا را به دوربین خود گره بزنید. همانطور که دوربین شما در سراسر جهان بازی حرکت می کند، می توانید شرایط نور را برای انعکاس محیط های جدید یا برجسته کردن مناطق یا اشیاء خاص تغییر دهید.

این می تواند شامل مواردی مانند تاریک کردن تدریجی صحنه در حین ورود دوربین به داخل غار یا برجسته کردن یک شی کلیدی با نورافکن باشد.

جلوه های انتقال دوربین

هنگام جابجایی بین دوربین ها می توانید جلوه های انتقال مختلفی ایجاد کنید. این می تواند یک برش ساده باشد که در آن نمای فوراً از یک دوربین به دوربین دیگر می پرد یا محو شدن که در آن نمای به تدریج از یک دوربین به دوربین دیگر منتقل می شود.

مطلب مرتبط:   چگونه می توان اجرا را در برنامه Node.js متوقف کرد

می‌توانید از انتقال‌های پیچیده‌تر مانند پاک کردن، اسلاید یا عنبیه با کدنویسی و انیمیشن اضافی استفاده کنید.

بهترین روش ها برای افزودن سیستم دوربین

هنگام افزودن یک سیستم دوربین به بازی خود، چندین روش برتر وجود دارد که باید به خاطر داشته باشید تا از بهترین تجربه ممکن بازی اطمینان حاصل کنید.

از حرکات ناگهانی دوربین خودداری کنید

تغییرات ناگهانی در زاویه دید دوربین می تواند برای بازیکنان گیج کننده باشد و باعث اختلال در بازی شود. برای حفظ غوطه وری، همیشه انتقال نرم دوربین را هدف قرار دهید.

لرزش دوربین را محدود کنید

در حالی که لرزش دوربین می‌تواند به رویدادهای خاص تأثیر بگذارد، اما زیاده‌روی آن می‌تواند دنبال کردن بازی را سخت و بازی را ناراحت‌کننده کند. از این اثر به اندازه و با اعتدال استفاده کنید.

سطوح مختلف زوم را تست کنید

بازی‌های مختلف و موقعیت‌های مختلف در یک بازی ممکن است نیاز به سطوح مختلف بزرگنمایی داشته باشند. به طور کامل تست کنید تا مناسب ترین سطح بزرگنمایی را برای هر موقعیت پیدا کنید.

مرزهای دوربین را با دقت در نظر بگیرید

مرزهای دوربین باید با دقت تنظیم شود تا متناسب با طراحی سطوح شما باشد. شما نمی خواهید بازیکن خارج از دنیای بازی را ببیند یا عناصر مهم را خارج از صفحه نمایش از دست بدهد.

اولویت دادن به تجربه بازیکن

هدف اصلی سیستم دوربین همیشه باید ارتقای تجربه بازیکن باشد. دوربین چه بهترین نمای اکشن را ارائه دهد، چه بر لحظات کلیدی تأکید کند یا به بازیکن کمک کند تا در محیط حرکت کند، دوربین همیشه باید به تجربه بهتر بازی کمک کند.

جذاب‌تر کردن بازی‌های گودو با سیستم دوربین

یک سیستم دوربین به خوبی پیاده سازی شده می تواند تجربه کلی بازی را بهبود بخشد. این می تواند بر اکشن تأکید کند، به داستان گویی کمک کند و تجربه ای فراگیرتر ارائه دهد.

با کنترل آنچه که بازیکن می بیند و زمانی که آن را می بیند، می توانید سفر او را در دنیای بازی هدایت کنید و گیم پلی را پویاتر و جذاب تر کنید.