تلعب حركة اللاعب دورًا مهمًا في جعل ألعاب Godot أكثر جاذبية. تعلم كيفية تنفيذها.

يعد تنفيذ حركة اللاعب جانبًا أساسيًا لإنشاء ألعاب جذابة في Godot Game Engine. تتيح حركة اللاعب للمستخدمين التحكم في الشخصيات واستكشاف عوالم اللعبة والتفاعل مع العناصر المختلفة في بيئة اللعبة.

إعداد لعبة جودو

للبدء ، أنشئ مشروعًا جديدًا ثنائي الأبعاد بتنسيق محرك لعبة جودو. بعد ذلك ، اتبع هذه الخطوات لإضافة حركة اللاعب إلى لعبتك

أنشئ مشهدًا جديدًا بالنقر بزر الماوس الأيمن فوق ملف نظام الملفات لوحة ، ثم التحديد ملف جديد وتسميتها مشاهد. داخل مشاهد مجلد ، انقر بزر الماوس الأيمن وقم بإنشاء مشهد ثنائي الأبعاد جديد. احفظه باسم مناسب ، على سبيل المثال ، Player.tscn.

الكود المستخدم في هذه المقالة متوفر في هذا مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.

أضف شخصية عقدة إلى المشهد بالنقر فوق أضف العقدة زر واختيار شخصية من مكتبة العقدة.

مع ال شخصية العقدة المحددة ، انقر فوق أضف عقدة فرعية زر لإضافة أ تصادم. اضبط شكل ملف تصادم لتتناسب مع أبعاد اللاعب. يمكنك استخدام شكل مستطيل للبساطة.

بعد ذلك ، أضف ملف سبرايت تو دي مكون ل شخصية عقدة واختيار كائن مناسب لشخصيتك المشغل.

instagram viewer

إضافة حركة اللاعب باستخدام إدخال لوحة المفاتيح

الآن ، يمكنك إضافة حركة اللاعب باستخدام إدخال لوحة المفاتيح إلى ملف Player.gd النصي.

تمديد شخصية العقدة ، اضبط سرعة الحركة ، واحصل على الإدخال من مفاتيح الأسهم (ui_left ، ui_right ، ui_up ، ui_down). احسب سرعة الحركة بناءً على اتجاه الإدخال ، وقم بتطبيعه ، ثم حرك اللاعب باستخدام تحرك و اصطدم تعمل في _physics_process طريقة.

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 الخاصة بك ، باتباع أفضل الممارسات لن تجعل شفرتك أكثر وضوحًا وفعالية فحسب ، بل ستساهم أيضًا في لاعب أفضل خبرة:

مخاوف منفصلة

نظّم منطق حركة المشغل في وظائف أو نصوص منفصلة. على سبيل المثال ، قم بإنشاء برنامج نصي للتعامل مع مدخلات اللاعب ، وآخر لحركة الشخصية ، وربما آخر للتعامل مع الرسوم المتحركة.

يجعل فصل الاهتمامات الكود الخاص بك أكثر نمطية ويسهل صيانته ، فضلاً عن تعزيز التعاون الأفضل بين أعضاء الفريق.

استخدم دلتا تايم

عند حساب الحركة ، اضرب دائمًا قيمك في زمن دلتا (دلتا) لضمان الحركة السلسة عبر معدلات الإطارات المختلفة. يمثل وقت دلتا الوقت المنقضي منذ آخر إطار ويضمن أن يتحرك اللاعب بسرعة ثابتة ، بغض النظر عن أداء الجهاز.

تحديد سرعة الحركة

قم بتعيين سرعات الحركة القصوى للاعب الخاص بك لتجنب الحركة عالية السرعة غير المقصودة. يمكن أن يكون هذا القيد مفيدًا في منع اللاعبين من كسر فيزياء اللعبة أو مواجهة مشكلات اكتشاف الاصطدام.

ضع في اعتبارك طبقات الفيزياء وأقنعة الاصطدام

يتيح لك Godot تكوين طبقات التصادم والأقنعة لكائنات مختلفة في لعبتك. يتيح لك الإعداد الصحيح لهذه الطبقات والأقنعة التحكم في الكائنات التي يمكن أن تتفاعل مع بعضها أثناء الحركة. على سبيل المثال ، قد ترغب في أن يصطدم المشغل بأشياء صلبة ولكن لا تمر عبر الأشياء غير الصلبة.

أضف الملاحظات المرئية والصوتية

قم بتطبيق المؤثرات المرئية والإشارات الصوتية لتقديم ملاحظات للاعبين أثناء الحركة. على سبيل المثال ، يمكن أن تؤدي إضافة جزيئات الغبار عند تشغيل اللاعب أو صوت خطوات الأقدام إلى تعزيز الشعور بالانغماس والمشاركة.

جعل ألعاب Godot أكثر تفاعلاً مع حركة اللاعب

يمكن لميكانيكا الحركة الانسيابية والاستجابة أن تحسن بشكل كبير تجربة اللاعب الإجمالية. سواء كنت تستكشف عالمًا شاسعًا ، أو تتفادى الأعداء ، أو تحل الألغاز ، فإن حركة اللاعب السلسة تعزز الانغماس وتبقي اللاعبين مدمنين.

من خلال تنفيذ حركة اللاعب باستخدام GDScript وعقدة CharacterBody2D ، يمكنك إنشاء تجارب لعب ديناميكية وممتعة. تعمل القدرة على التحرك بحرية والتفاعل مع عالم اللعبة على تمكين اللاعبين وتجعلهم يشعرون بأنهم متصلون بالبيئة الافتراضية.