با استفاده از سیستم سلامت و آسیب، تجربه گیم پلی خود را در گودو تقویت کنید.
یک سیستم سلامت و آسیب به بازیکنان این امکان را می دهد که در صورت برخورد با موانع یا دشمنان، آسیب ببینند و امتیاز سلامتی خود را از دست بدهند. همچنین آنها را قادر میسازد تا سلامت خود را از طرق مختلف بازیابی کنند، مانند پاور آپ یا بستههای سلامت.
گودو، یک موتور بازی منبع باز محبوب، یک رویکرد ساده و انعطاف پذیر برای پیاده سازی چنین سیستم هایی ارائه می دهد. شما به راحتی می توانید یک بازی دو بعدی با شخصیت بازیکن، دشمن و نوار سلامتی ایجاد کنید تا سلامت بازیکن را به صورت بصری نشان دهید.
راه اندازی بازی گودو
ابتدا ساختار اولیه پروژه را در موتور بازی گودو تنظیم کنید و گره های لازم را ایجاد کنید.
کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.
یک صحنه جدید برای شخصیت بازیکن ایجاد کنید. یک گره KinematicBody2D اضافه کنید و در داخل آن یک CollisionShape2D با شکل مستطیل اضافه کنید تا نشان دهنده هیت باکس بازیکن باشد. یک گره Sprite را به KinematicBody2D وصل کنید تا شخصیت بازیکن نمایش داده شود.
# Player.gd
extends KinematicBody2D
const SPEED = 200
var velocity = Vector2.ZERO
var health = 100
func _physics_process(delta):
velocity.x = 0
velocity.y = 0
if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
elif Input.is_action_pressed("ui_left"):
velocity.x -= SPEED
if Input.is_action_pressed("ui_down"):
velocity.y += SPEED
elif Input.is_action_pressed("ui_up"):
velocity.y -= SPEED
move_and_collide(velocity * delta)
اکنون، شما یک شخصیت بازیکن اصلی در پروژه گودو خود دارید. میتوانید با استفاده از کلیدهای جهتدار، پخشکننده را حرکت دهید، اما هنوز هیچ سیستم بهداشتی وجود ندارد.
طراحی عناصر رابط کاربری نوار سلامت
اکنون، میتوانید عناصر رابط کاربری را برای نمایش بصری سلامت بازیکن اضافه کنید. گودو یک کنترل داخلی به نام TextureProgress ارائه می دهد که برای این منظور به خوبی کار می کند.
یک گره جدید برای HUD (نمایشگر هدآپ) ایجاد کنید. یک گره CanvasLayer اضافه کنید و در داخل آن یک گره TextureProgress اضافه کنید. ظاهر گره TextureProgress را با توجه به سبک و تم بازی خود سفارشی کنید.
برای نمایش نوار سلامت با استفاده از TextureProgress در HUD، باید یک بافت به آن اختصاص دهید. TextureProgress از دو بافت استفاده می کند: یکی برای پس زمینه و دیگری برای قسمت پر شده (پیشرفت).
در پنل Inspector قسمت Texture را پیدا کنید. در زیر Texture، ویژگی هایی به نام Under و Over را خواهید یافت. بر روی دکمه بارگذاری برای هر ویژگی کلیک کنید و تصاویر مربوطه را انتخاب کنید.
یک اسکریپت را به صحنه HUD ضمیمه کنید تا نوار سلامت بر اساس سلامت بازیکن به روز شود:
# HUD.gd
extends CanvasLayer
onready var healthBar := $TextureProgress
func _ready():
update_health_bar()
func update_health_bar():
var hb = get_parent().get_node("KinematicBody2D")
healthBar.value = hb.health
مدیریت سلامت بازیکن
برای کاهش سلامت بازیکن در هنگام عبور از مرز صفحه، میتوانید با استفاده از عبارت if یک چک شرطی اضافه کنید. اگر بازیکن فراتر از صفحه نمایش برود، می توانید سلامت او را کاهش دهید. در اینجا نحوه رسیدن به این هدف آورده شده است:
# player.gd
extends KinematicBody2D
const SPEED = 200
const DAMAGE_AMOUNT = 0.1
var velocity = Vector2.ZERO
var health = 100
# Screen boundaries
var screen_size
var margin = 20
func _ready():
screen_size = get_viewport_rect().size
func _physics_process(delta):
# ... (existing movement code)
move_and_collide(velocity * delta)
var c1 = position.x < -margin
var c2 = position.x > screen_size.x + margin
var c3 = position.y < -margin
var c4 = position.y > screen_size.y + margin
# Check if the player is outside the screen boundaries
if c1 or c2 or c3 or c4:
take_damage_on_screen_exit()
func take_damage_on_screen_exit():
health -= DAMAGE_AMOUNT
if health <= 0:
health = 0
# Game over logic here
update_health_ui()
برای فراخوانی اسکریپت HUD و به روز رسانی نوار سلامت، تابع update_health_ui() را در اسکریپت player.gd اضافه کنید.
# Player.gd
extends KinematicBody2D
# ... (other code)
func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()
با این تغییرات، بازیکن در هنگام عبور از مرز صفحه آسیب می بیند و رابط کاربری نوار سلامت بر این اساس به روز می شود.
از جمله ویژگی های اضافی
سیستم سلامت و آسیب را می توان با ویژگی های مختلف اضافی برای بهبود تجربه گیم پلی گسترش داد. برخی از ایده ها عبارتند از:
پیکاپ های بهداشتی
پیکاپهای سلامتی را اجرا کنید که به بازیکن اجازه میدهد هنگام جمعآوری سلامت خود را بازیابی کند. پیکاپ های سلامتی می توانند آیتم های کلکسیونی باشند که در سراسر دنیای بازی پراکنده شده اند یا پاداش هایی برای شکست دادن دشمنان.
هنگامی که بازیکن با یک پیکاپ سلامت تعامل می کند، سلامتی آنها باید به میزان معینی تا حداکثر مقدار افزایش یابد. میتوانید از یک اسکریپت جدید برای آیتم سلامتی پیکاپ استفاده کنید و منطق برخورد و بازیابی سلامت را مدیریت کنید.
پاور آپ های شکست ناپذیری
پاور آپ هایی ایجاد کنید که به بازیکن شکست ناپذیری موقت برای مدت محدودی می دهد. هنگامی که بازیکن قدرت شکست ناپذیری را جمع آوری می کند، از آسیب دشمنان یا سایر خطرات مصون می شود.
یک تایمر برای ردیابی مدت زمان باقی مانده از حالت شکست ناپذیری اجرا کنید، و زمانی که تایمر تمام شد، بازیکن به حالت آسیب پذیر خود باز می گردد.
انواع مختلف دشمن
انواع دشمنان را با الگوهای حمله، مقادیر آسیب و رفتارهای مختلف طراحی کنید. هر نوع دشمن می تواند چالش های منحصر به فردی را برای بازیکن ایجاد کند و برای شکست دادن به استراتژی های مختلفی نیاز دارد.
به عنوان مثال، برخی از دشمنان ممکن است سریعتر حرکت کنند، آسیب بیشتری وارد کنند یا نقاط ضعف خاصی داشته باشند که بازیکن می تواند از آنها سوء استفاده کند. افزودن تنوع به برخوردهای دشمن، گیم پلی را جذاب نگه می دارد و از یکنواخت شدن آن جلوگیری می کند.
بازسازی سلامت
بازسازی سلامت را در طول زمان اجرا کنید تا به بازیکنان برای جلوگیری از آسیب پاداش دهید. هنگامی که بازیکن برای مدت زمان مشخصی آسیب نمی بیند، سلامت آنها به تدریج تا آستانه خاصی بازسازی می شود.
با این حال، مطمئن شوید که میزان بازسازی متعادل باشد تا از موقعیتهایی که بازیکن میتواند بدون هیچ چالشی منتظر بهبود کامل سلامتی خود باشد، اجتناب کنید.
بازخورد صوتی و تصویری
هنگامی که بازیکن آسیب می بیند، سلامتی را بازیابی می کند یا دشمنان را شکست می دهد، بازخورد صوتی و تصویری قانع کننده ای ارائه دهید.
جلوههای صوتی بدون حق چاپ، لرزشهای صفحه، جلوههای ذرات، و نشانههای بصری میتوانند غوطهور شدن پخشکننده را افزایش دهند و سیستم سلامت و آسیب را پویاتر و جذابتر کنند.
به یاد داشته باشید که تعادل کلی ویژگی های اضافی را که معرفی می کنید در نظر بگیرید. به تست بازی و جمعآوری بازخورد ادامه دهید تا مطمئن شوید که گیمپلی در طول بازی چالشبرانگیز، لذتبخش و با سرعت خوب باقی میماند.
درگیر کردن بازی های گودو با سیستم سلامت و آسیب
ادغام یک سیستم سلامت و آسیب در بازی گودو به عمق و چالش میافزاید و گیمپلی را برای بازیکنان جذابتر میکند. این یک عنصر ریسک-پاداش را معرفی می کند، زیرا بازیکنان برای پیشرفت در بازی باید استراتژی و سلامت خود را به طور موثر مدیریت کنند.
علاوه بر این، نمایش بصری نوار سلامتی بازخورد مهمی را در مورد وضعیت فعلی بازیکنان ارائه میکند و حس غوطهوری را در آنها تقویت میکند.