در این راهنمای ساده استاد پیاده سازی مکانیک پرش شوید. بیایید به آن بپریم!
مکانیک پرش جنبه اساسی بسیاری از بازیهای پلتفرمر است که بازیکنان را قادر میسازد تا موانع را طی کنند، به پلتفرمهای بالاتر برسند و یک لایه تعاملی اضافی به گیمپلی اضافه کنند.
در گودو، یک موتور بازی محبوب منبع باز، پیاده سازی مکانیک پرش نسبتاً ساده است و می تواند تا حد زیادی درگیر شدن و لذت بردن از بازی شما را افزایش دهد.
راه اندازی بازی گودو
قبل از اینکه وارد مکانیک پرش شوید، ساختار اصلی بازی گودو را تنظیم کنید. با ایجاد یک پروژه دو بعدی جدید در گودو شروع کنید. در صحنه، یک گره KinematicBody2D به عنوان شخصیت بازیکن ایجاد کنید. یک CollisionShape2D را به پخش کننده وصل کنید و شکل آن را با RectangleShape2D مشخص کنید.
کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.
علاوه بر این، یک Sprite2D برای نمایش بصری پخش کننده اضافه کنید. با استفاده از StaticBody2D در صحنه بازی چند پلتفرم افقی و عمودی ایجاد کنید تا زمینه ای برای مکانیک های پرش فراهم کنید.
کد اضافه کنید تا بازیکن بتواند به چپ و راست حرکت کند. همچنین، گرانش را برای حرکت واقع گرایانه ترکیب کنید. در اینجا یک نمونه قطعه کد GDScript برای شروع آورده شده است:
extends KinematicBody2Dconst GRAVITY = 800const MOVE_SPEED = 200var velocity = Vector2.ZEROfunc _physics_process(delta): var input_vector = Vector2.ZERO if Input.is_action_pressed("move_right"): input_vector.x += 1 if Input.is_action_pressed("move_left"): input_vector.x -= 1 velocity.y += GRAVITY * delta velocity = move_and_slide(velocity, Vector2(0, -1)) velocity.x = input_vector.x * MOVE_SPEED
از عبارت if-else برای تعیین حرکت افقی بازیکن استفاده کنید. اگر پخش کننده move_right را فشار دهد، 1 را به input_vector.x اضافه کنید. اگر بازیکن move_left را فشار دهد، 1 را از input_vector.x کم کنید. این رویکرد به کنترل حرکت نرمتر اجازه میدهد و درگیریهای احتمالی را زمانی که هر دو عمل به طور همزمان فشار داده میشوند، حذف میکند.
پرش ساده را ادغام کنید
اکنون یک ویژگی پرش اولیه را به پخش کننده خود اضافه کنید. بازیکن باید بتواند فقط زمانی که روی سکو هستند بپرد. کد زیر را به اسکریپت موجود اضافه کنید:
const JUMP_FORCE = -400var is_on_floor = falsefunc _physics_process(delta): ... is_on_floor = is_on_floor() if is_on_floor and Input.is_action_just_pressed("jump"): velocity.y = JUMP_FORCE
با این کد، با استفاده از تابع ()is_on_floor بررسی کنید که آیا پخش کننده روی پلتفرم است. هنگامی که بازیکن عمل پرش را فشار می دهد، سرعت عمودی را روی مقدار نیروی پرش تنظیم کنید و باعث پرش بازیکن شود.
ادغام دو پرش
برای افزودن تطبیق پذیری بیشتر به مکانیک پرش خود، یک ویژگی پرش دوبل را اجرا کنید. بازیکن می تواند پرش دوم را در حالی که در هوا است انجام دهد و به آنها اجازه می دهد حتی به سکوهای بالاتری برسند. در اینجا یک نمونه پیاده سازی آورده شده است:
const MAX_JUMP_COUNT = 3var jump_count = 0func _physics_process(delta): ... is_on_floor = is_on_floor() if is_on_floor: jump_count = 0 var is_jumping = Input.is_action_just_pressed("jump") if is_on_floor and is_jumping: velocity.y = JUMP_FORCE jump_count += 1 if jump_count < MAX_JUMP_COUNT and is_jumping: velocity.y = JUMP_FORCE jump_count += 1
برای پیگیری تعداد پرش های انجام شده توسط بازیکن، یک متغیر jump_count معرفی کنید. ثابت MAX_JUMP_COUNT حداکثر تعداد پرش های مجاز را تعیین می کند. بازیکن فقط در صورتی می تواند پرش دوم را انجام دهد که هنوز در حداکثر تعداد پرش باشد.
Jump Dash را ادغام کنید
برای هیجان انگیزتر کردن مکانیک پرش، ویژگی پرش داشبورد را اجرا کنید. این ویژگی به بازیکن این امکان را می دهد که در هوای هوا به سرعت به صورت افقی حرکت کند و به آنها امکان می دهد تا با چابکی از میان موانع عبور کنند. در اینجا یک نمونه پیاده سازی آورده شده است:
const DASH_FORCE = 4000var can_dash = truefunc _physics_process(delta): ... is_on_floor = is_on_floor() if is_on_floor: jump_count = 0 can_dash = true var is_jumping = Input.is_action_just_pressed("jump") var dash = Input.is_action_just_pressed("dash") if is_on_floor and is_jumping: velocity.y = JUMP_FORCE jump_count += 1 if jump_count < MAX_JUMP_COUNT and is_jumping: velocity.y = JUMP_FORCE jump_count += 1 if can_dash and dash: velocity.x += DASH_FORCE can_dash = false
یک متغیر can_dash را برای ردیابی اینکه آیا پخش کننده می تواند خط تیره را انجام دهد معرفی کنید. هنگامی که بازیکن اکشن داشبورد را فشار میدهد، یک نیروی افقی (DASH_FORCE) به سرعت بازیکن اضافه کنید تا آنها را قادر میسازد تا به صورت افقی در هوا حرکت کنند.
از جمله ویژگی های اضافی
علاوه بر مکانیک های هسته پرش، می توانید با گنجاندن ویژگی های مختلف، بازی خود را بیشتر ارتقا دهید. اینها می توانند شامل اجرای پدهای پرش یا فنرها برای پرش های تقویت شده، معرفی قدرت هایی که رفتار پرش را تغییر می دهند، یا افزودن جلوه های بصری مانند سیستم های ذرات برای یک تجربه پرش پویاتر باشد.
پدهای پرش یا فنرها
برای پیادهسازی پدهای پرش یا فنرهایی که پرشهای تقویتشده را فراهم میکنند، میتوانید اشیاء خاصی را به صحنه بازی خود اضافه کنید و تشخیص دهید که بازیکن چه زمانی با آنها برخورد میکند. در اینجا یک نمونه پیاده سازی آورده شده است:
const JUMP_PAD_FORCE = -800func _on_JumpPad_body_entered(body): if body == $Player: velocity.y = JUMP_PAD_FORCE
در این کد، JumpPad یک شی برخوردی است که در صحنه بازی قرار می گیرد و Player نام گره شخصیت بازیکن است. هنگامی که بازیکن با پد پرش برخورد می کند، با اعمال نیروی عمودی بالاتر به بازیکن، یک پرش تقویت شده ایجاد می کند.
پاور آپ ها و توانایی های ویژه
می توانید قدرت یا توانایی های ویژه ای را معرفی کنید که رفتار مکانیک پرش را تغییر می دهد. به عنوان مثال، می توانید یک پاور آپ ایجاد کنید که به بازیکن توانایی انجام یک پرش سه گانه را می دهد. در اینجا یک نمونه پیاده سازی آورده شده است:
const MAX_JUMP_COUNT = 4func _physics_process(delta): ... if is_on_floor: jump_count = 0 if is_on_floor and is_jumping: velocity.y = JUMP_FORCE jump_count += 1 if jump_count < MAX_JUMP_COUNT and is_jumping: velocity.y = JUMP_FORCE jump_count += 1
در این کد، مقدار ثابت MAX_JUMP_COUNT روی 4 تنظیم شده است، که به بازیکن اجازه میدهد تا سه پرش متوالی را در هنگام روشن شدن برق انجام دهد.
جلوههای بصری
برای جذابتر کردن پرش از نظر بصری، میتوانید سیستمهای ذرات یا جلوههای بصری دیگر را اضافه کنید. به عنوان مثال، می توانید یک سیستم ذرات ایجاد کنید که هنگام پرش بازیکن، ذرات را ساطع می کند. در اینجا یک نمونه پیاده سازی آورده شده است:
var jump_particles = preload("res://JumpParticles.tscn")func _physics_process(delta): ... if is_on_floor and Input.is_action_just_pressed("jump"): velocity.y = JUMP_FORCE jump_particles.instance()
در این کد، JumpParticles.tscn یک صحنه حاوی یک گره سیستم ذرات است. هنگامی که بازیکن می پرد، نمونه ای از سیستم ذرات ایجاد می شود و در نتیجه ذرات جذاب بصری ساطع می شوند.
بهترین روش ها برای مکانیک پرش
هنگام پیاده سازی مکانیک پرش در موتور بازی گودو، توجه به چند روش ضروری ضروری است:
- مقادیر گرانش، نیروی پرش، نیروی خط تیره و سایر پارامترها را برای دستیابی به احساس رضایتبخشی از گیمپلی بهخوبی تنظیم کنید. آزمایش و تکرار برای یافتن تعادل مناسب بسیار مهم است.
- مکانیک های پرش را آزمایش و تکرار کنید تا مطمئن شوید که پاسخگو، شهودی و متعادل هستند. درخواست بازخورد از بازیکنان آزمایش کننده برای اصلاح مکانیک و انجام تنظیمات لازم.
- برای جلوگیری از رفتار ناخواسته و اطمینان از تعامل صحیح بازیکن با پلتفرم ها، تشخیص برخورد مناسب را اجرا کنید. از سیستم برخورد گودو و لایه های برخورد مناسب برای رسیدگی دقیق به برخوردها استفاده کنید.
- اضافه کردن موسیقی یا انیمیشن های بدون حق نسخه برداری را در نظر بگیرید تا درک بازیکن از حرکات پرش شخصیت خود را افزایش دهید. انیمیشنهای پرش، دویدن و سایر اقدامات مرتبط میتوانند نشانههای بصری را ارائه دهند که تجربه کلی بازیکن را بهبود میبخشد.
جذابتر کردن بازیها با Jump Mechanics
با گنجاندن مکانیک های پرش در بازی گودو خود، می توانید تعامل و لذت آن را به میزان قابل توجهی افزایش دهید. پرش بازیکنان را قادر میسازد تا در محیطهای پیچیده حرکت کنند، بر موانع غلبه کنند و مناطق جدید را کشف کنند.
عنصری از مهارت و دقت را اضافه می کند و در صورت اجرای صحیح حس موفقیت را ارائه می دهد. علاوه بر این، با ترکیب مکانیک های پرش با سایر عناصر بازی مانند پازل ها، دشمنان یا کلکسیون ها، می توانید تجربه های منحصر به فرد و چالش برانگیزی از گیم پلی ایجاد کنید که بازیکنان را غرق و سرگرم می کند.