שפר את חווית המשחק שלך בגודו על ידי שילוב מערכת בריאות ונזקים.

מערכת בריאות ונזקים מאפשרת לשחקנים לקחת נזק ולאבד נקודות בריאות כאשר הם נתקלים במכשולים או באויבים. זה גם מאפשר להם לשחזר את הבריאות באמצעים שונים, כגון הפעלת כוח או חבילות בריאות.

Godot, מנוע משחק פופולרי בקוד פתוח, מספק גישה פשוטה וגמישה להטמעת מערכות כאלה. אתה יכול בקלות ליצור משחק דו מימדי עם דמות שחקן, אויב וסרגל בריאות כדי לייצג חזותית את בריאותו של השחקן.

הגדרת משחק Godot

ראשית, הגדר את מבנה הפרויקט הבסיסי ב מנוע המשחק Godot וליצור את הצמתים הדרושים.

הקוד המשמש במאמר זה זמין כאן מאגר GitHub והוא בחינם עבורך לשימוש תחת רישיון MIT.

צור סצנה חדשה עבור דמות השחקן. הוסף KinematicBody2D צומת, ובתוכו, הוסף א CollisionShape2D עם צורת מלבן כדי לייצג את ה-hitbox של השחקן. צרף א שֵׁדוֹן צומת ל- 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

instagram viewer

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)

עכשיו, יש לך דמות שחקן בסיסית בפרויקט Godot שלך. אתה יכול להזיז את השחקן באמצעות מקשי החצים, אבל עדיין אין מערכת בריאות במקום.

עיצוב אלמנטים של סרגל הבריאות

כעת, אתה יכול להוסיף רכיבי ממשק משתמש כדי לייצג חזותית את בריאותו של הנגן. Godot מספק שליטה מובנית בשם TextureProgress שעובד היטב למטרה זו.

צור צומת חדש עבור ה-HUD (תצוגת ראשים). הוסף שכבת קנבס צומת, ובתוכו, הוסף א TextureProgress צוֹמֶת. התאם אישית את המראה של TextureProgress צומת לפי הסגנון והנושא של המשחק שלך.

כדי להציג את סרגל הבריאות באמצעות TextureProgress ב-HUD, אתה צריך להקצות לו מרקם. TextureProgress משתמש בשני מרקמים: אחד עבור הרקע ואחר עבור החלק המלא (התקדמות).

בחלונית המפקח, אתר את מרקם סָעִיף. תַחַת מרקם, תמצא נכסים בשם תַחַת ו על. לחץ על לִטעוֹן לחצן עבור כל נכס ובחר את התמונות המתאימות.

צרף סקריפט לסצנת ה-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()

תוסיף את ה update_health_ui() לתפקד ב player.gd סקריפט כדי לקרוא לסקריפט HUD ולעדכן את סרגל הבריאות.

# Player.gd
extends KinematicBody2D

#... (other code)

func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()

עם השינויים הללו, הנגן יסבול כעת נזק כאשר הוא יחצה את גבול המסך, וממשק המשתמש של סרגל הבריאות יתעדכן בהתאם.

כולל תכונות נוספות

ניתן להרחיב את מערכת הבריאות והנזק עם תכונות נוספות שונות כדי לשפר את חווית המשחק. כמה רעיונות כוללים:

איסוף בריאות

הטמיע איסוף בריאות המאפשר לשחקן לשחזר את בריאותו בעת איסוף. טנדרים בריאותיים יכולים להיות פריטי אספנות הפזורים ברחבי עולם המשחק או תגמולים על הבסתם של אויבים.

כאשר השחקן מקיים אינטראקציה עם איסוף בריאות, הבריאות שלו צריכה לעלות בכמות מסוימת, עד לערך מקסימלי. אתה יכול להשתמש בסקריפט חדש עבור פריט איסוף הבריאות ולטפל בהיגיון ההתנגשות ושיחזור הבריאות.

כוח-אפים בלתי מנוצחים

צור כוח-אפים המעניקים לשחקן בלתי מנוצח זמנית לזמן מוגבל. כאשר השחקן אוסף כוח-אפ בלתי מנוצח, הם הופכים חסינים מפני נזק מאויבים או מפגעים אחרים.

הטמע טיימר כדי לעקוב אחר משך הזמן הנותר של מצב הבלתי מנוצח, וכאשר הטיימר נגמר, השחקן חוזר למצב הפגיע שלו.

סוגים שונים של אויבים

עצב מגוון של אויבים עם דפוסי התקפה שונים, ערכי נזק והתנהגויות שונות. כל סוג אויב יכול להציב אתגרים ייחודיים לשחקן ולדרוש אסטרטגיות שונות כדי להביס.

לדוגמה, אויבים מסוימים עשויים לנוע מהר יותר, לגרום נזק רב יותר, או שיש להם נקודות תורפה ספציפיות שהשחקן יכול לנצל. הוספת גיוון למפגשי אויב שומרת על המשחק מרתק ומונעת ממנו להפוך לחדגוני.

התחדשות בריאותית

יישם חידוש בריאות לאורך זמן כדי לתגמל שחקנים על הימנעות מנזק. כאשר השחקן אינו סופג נזק למשך זמן מסוים, בריאותו מתחדשת בהדרגה עד לסף מסוים.

עם זאת, ודא שקצב ההתחדשות מאוזן כדי למנוע מצבים שבהם השחקן יכול פשוט לחכות לבריאותו להתאושש לחלוטין ללא כל אתגר.

משוב אודיו ויזואלי

ספק משוב אודיו וויזואלי משכנע כאשר הנגן חוטף נזק, משחזר בריאות או מביס אויבים.

בר - השפעה אפקטים קוליים ללא זכויות יוצרים, רעידות מסך, אפקטים של חלקיקים ורמזים חזותיים יכולים לשפר את הטבילה של השחקן ולגרום למערכת הבריאות והנזק להרגיש דינמית ומושכת יותר.

זכור לשקול את האיזון הכולל של התכונות הנוספות שאתה מציג. המשך לבחון את המשחק ולאסוף משוב כדי להבטיח שהמשחק יישאר מאתגר, מהנה וקצב טוב לאורך כל המשחק.

הופכים את משחקי Godot למעורבים יותר עם מערכת הבריאות והנזק

שילוב מערכת בריאות ונזקים במשחק Godot שלך מוסיף עומק ואתגר, מה שהופך את המשחק למושך יותר עבור השחקנים. זה מציג אלמנט סיכון-תגמול, מכיוון ששחקנים צריכים לתכנן אסטרטגיה ולנהל את בריאותם ביעילות כדי להתקדם במשחק.

בנוסף, הייצוג החזותי של סרגל הבריאות מספק לשחקנים משוב חשוב על מצבם הנוכחי, ומשפר את תחושת השקיעה שלהם.