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

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

הגדרת משחק Godot

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

צור סצנה חדשה על ידי לחיצה ימנית על מערכת קבצים לוח, ולאחר מכן בחירה תיקייה חדשה ולתת לו שם סצנות. בתוך ה סצנות תיקיה, לחץ לחיצה ימנית וצור סצנה דו-ממדית חדשה. שמור אותו בשם מתאים, למשל, Player.tscn.

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

הוסף CharacterBody2D צומת לסצנה על ידי לחיצה על הוסף Node כפתור ובחירה CharacterBody2D מספריית הצומת.

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

לאחר מכן, הוסף א ספרייט2D רכיב ל- CharacterBody2D צומת ובחר ספרייט מתאים לדמות השחקן שלך.

instagram viewer

הוספת תנועת נגן באמצעות קלט מקלדת

כעת, אתה יכול להוסיף תנועת נגן באמצעות קלט מקלדת ל- Player.gd תַסרִיט.

האריך את CharacterBody2D צומת, הגדר את מהירות התנועה וקבל את הקלט ממקשי החצים (ui_left, ui_right, ui_up, ui_down). חשב את מהירות התנועה בהתבסס על כיוון הקלט, נרמל אותה ואז הזיז את הנגן באמצעות ה- לזוז_ולהתנגש לתפקד ב _תהליך_פיזיקה שיטה.

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)

הוספת סיבוב

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

extends CharacterBody2D

@export var speed = 400
@export var rotation_speed = 1.5

var rotation_direction = 0

func get_input():
rotation_direction = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
velocity = transform.x * (Input.get_action_strength("ui_up") - Input.get_action_strength("ui_down")) * speed

func _physics_process(delta):
get_input()
rotation += rotation_direction * rotation_speed * delta
move_and_slide()

השחקן יסתובב לכיוון התנועה. ניתן לכוונן את מהירות הסיבוב באמצעות מהירות סיבוב מִשְׁתַנֶה.

הוספת תנועת נגן באמצעות קלט עכבר

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

extends CharacterBody2D

@export var speed = 300

func _physics_process(delta):
if Input.is_action_just_pressed("click"):
var target_position = get_global_mouse_position()
var direction = (target_position - global_position).normalized()
velocity = direction * speed * delta
move_and_collide(velocity)

בקוד זה, השחקן יזוז לעבר המיקום של לחיצת העכבר בכל פעם נְקִישָׁה הפעולה מופעלת. ניתן לשלוט במהירות השחקן באמצעות ה- מְהִירוּת מִשְׁתַנֶה.

בנוסף, אתה יכול גם ליישם סיבוב מבוסס עכבר באופן הבא:

extends CharacterBody2D

func _physics_process(delta):
var mouse_position = get_global_mouse_position()
var target_direction = (mouse_position - global_position).angle()
rotation = target_direction

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

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

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

קפיצה

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

דאש או ספרינט

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

החלקה וטיפוס על הקיר

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

מכניקת פלטפורמות

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

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

שיטות עבודה מומלצות להוספת תנועת שחקן

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

חששות נפרדים

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

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

השתמש ב-Delta Time

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

הגבל את מהירות התנועה

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

שקול שכבות פיזיקה ומסכות התנגשות

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

הוסף משוב חזותי ואודיו

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

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

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

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