اكتشف كيفية إضافة عنصر غير متوقع إلى طريقة لعبك.
في تطوير اللعبة ، يمكن أن تساهم عناصر العشوائية وعدم القدرة على التنبؤ بشكل كبير في تجربة اللعب الشاملة. إحدى الطرق الخاصة لتقديم مثل هذا العنصر هي من خلال الكائنات المتحركة العشوائية ، والتي تضيف طبقة إضافية من التفاعل والتحدي.
إذا كنت تعمل مع Godot ، فيمكنك تحقيق هذا التأثير باستخدام GDScript ، لغة البرمجة النصية الأصلية في Godot.
إعداد لعبة Godot الخاصة بك
قبل البدء ، قم بإعداد مشهد أساسي للعبة ثنائية الأبعاد بتنسيق محرك لعبة Godot. أنشئ مشهدًا ثنائي الأبعاد جديدًا وأضف ملف شخصية عقدة لشخصية اللاعب. ال شخصية العقدة هي العنصر الرئيسي لتمثيل الشخصيات التي يمكنها التحرك والتفاعل مع بيئتهم.
الكود المستخدم في هذه المقالة متوفر في هذا مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.
أضف عقدتين فرعيتين إلى شخصية اللاعب: أ تصادم ذات شكل مستطيل ، و سبرايت تو دي للتمثيل الرسومي للاعب.
لإضافة إمكانية التنقل إلى الحرف ، يمكنك استخدام كود GDScript التالي:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()if Input.is_action_pressed('ui_right'):
velocity.x += 1if Input.is_action_pressed('ui_left'):
velocity.x -= 1if Input.is_action_pressed('ui_down'):
velocity.y += 1if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
تحديد متغير ، سرعةلسرعة حركة لاعبك. ال _physics_process (دلتا) تتحكم الوظيفة في حركة الشخصية استجابةً لمدخلات اللاعب. قم بتطبيع سرعة الشخصية واتجاهها لضمان حركة ثابتة بغض النظر عن الاتجاه.
إنشاء كائنات ثابتة باستخدام StaticBody2D
بعد ذلك ، قم بإنشاء كائنات يمكن للاعبك التفاعل معها. يوضح المثال التالي إنشاء كائن ثابت باستخدام StaticBody2D العقدة:
extends StaticBody2D
func _ready():
var collision_shape = CollisionShape2D.new()
collision_shape.shape = RectangleShape2D.new()
add_child(collision_shape)
إضافة خوارزمية حركة عشوائية للأشياء الثابتة
الآن بعد أن أصبحت العناصر الثابتة جاهزة ، حان الوقت لإضافة العشوائية إلى لعبتك. للقيام بذلك ، يمكنك استخدام خوارزمية بسيطة للحركة العشوائية:
extends StaticBody2D
var speed = 100
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
func _physics_process(delta):
position += direction * speed * delta
حدد سرعة الجسم الساكن. أيضًا ، قم بإنشاء اتجاه Vector2 وقم بتهيئته بقيم عشوائية بين -1 و 1 لكلا المحورين.
في ال _physics_process (دلتا) دالة ، قم بزيادة موضع الكائن بمنتج اتجاهه وسرعته ودلتا الوقت ، مما يجعله يتحرك في الاتجاه بالسرعة المحددة.
المواقف والمسارات العشوائية للأشياء الثابتة
يمكنك زيادة العشوائية وعدم القدرة على التنبؤ ليس فقط من خلال تغيير سرعة واتجاه الكائنات ولكن أيضًا مواضعها الأولية ومساراتها.
extends StaticBody2D
var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)
func _physics_process(delta):
position += direction * speed * delta
هنا السرعة هي قيمة عشوائية بين 50 و 150. يتم تحديد الموضع المبدئي للكائن بشكل عشوائي ضمن حجم منفذ العرض بتنسيق _مستعد() وظيفة ويتم تحديث موضع الكائن في _physics_process (دلتا) تعمل تمامًا كما كان من قبل.
ضبط السرعة والاتجاه والعشوائية
يمكنك تصميم طريقة لعب أكثر تفاعلية وجاذبية من خلال معالجة السرعة والاتجاه والعشوائية للحركة للأجسام الثابتة. يمكنك إنشاء عناصر التحكم هذه باستخدام GDScript:
extends StaticBody2D
var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
var speed_variation_rate = 0.5
var direction_variation_rate = 0.5func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)func _physics_process(delta):
randomize_speed_and_direction()
position += direction * speed * deltafunc randomize_speed_and_direction():
if randf() < speed_variation_rate:
speed = randf_range(50, 150)
if randf() < direction_variation_rate:
direction = Vector2(value, value).normalized()
ميزات إضافية لكائناتك المتحركة العشوائية
بينما تضيف الحركة العشوائية الأساسية ديناميكية غير متوقعة إلى لعبتك ، هناك عدد لا يحصى من الميزات الإضافية التي يمكنك إضافتها لتحسين لعبتك بشكل أكبر. تتضمن بعض الأمثلة ما يلي:
اختلاف اللون
على غرار الطريقة العشوائية لسرعة واتجاه الكائنات ، يمكنك أيضًا اختيار ألوانها عشوائيًا. يمكن أن يضيف هذا جانبًا أكثر حيوية وجاذبية من الناحية المرئية إلى لعبتك. يمكنك القيام بذلك عن طريق تغيير ملف عدل ملك العفريت.
sprite.modulate = Color(randf(), randf(), randf())
اختلاف الحجم
يضيف التغيير العشوائي لحجم الكائنات مستوى آخر من الصعوبة وعدم القدرة على التنبؤ. سيحتاج اللاعبون إلى التكيف باستمرار مع الأحجام المتغيرة للأشياء. يمكنك تغيير حجم الكائن عن طريق ضبطه حجم ملكية:
sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0))
تفريخ الكائن
بدلاً من وجود عدد ثابت من الكائنات المتحركة العشوائية ، يمكنك تنفيذ نظام ينتج كائنات جديدة على فترات منتظمة أو في ظل ظروف معينة. قد يضيف هذا طبقة جديدة من الصعوبة حيث سيحتاج اللاعب إلى تعديل استراتيجيته مع ظهور المزيد من الكائنات على الشاشة.
عمر الكائن
بالإضافة إلى إنتاج كائنات جديدة ، يمكنك أيضًا جعل الأشياء تدمر نفسها تلقائيًا بعد فترة زمنية معينة. يمكن أن يمنع ذلك الشاشة من التشوش بشكل كبير ويحافظ على اللعبة جديدة.
التفاعلات
فكر في إضافة تفاعلات محددة بين اللاعب والأشياء المتحركة. على سبيل المثال ، قد يؤدي الاصطدام بأشياء معينة إلى زيادة نقاط اللاعب أو تغيير سرعة اللاعب أو حتى تغيير بيئة اللعبة. بامكانك ايضا السماح للاعب بالقفز عند الوقوف على منصة.
أفضل الممارسات لإضافة كائنات عشوائية متحركة
عند إضافة كائنات متحركة عشوائية ، من المهم مراعاة بعض أفضل الممارسات لضمان لعبة متوازنة وجذابة:
اعتبارات الأداء
على الرغم من أنه من المغري إضافة أكبر عدد ممكن من العناصر ، تذكر أن كل كائن يزيد العبء الحسابي على محرك اللعبة. اختبر دائمًا لعبتك على الأجهزة المستهدفة لضمان عدم تأثر الأداء سلبًا.
موازنة العشوائية وقابلية اللعب
بينما يمكن للأشياء العشوائية أن تضيف متعة إلى عدم القدرة على التنبؤ ، فإن الكثير من العشوائية يمكن أن يؤدي إلى الإحباط. تأكد من الاختبار على نطاق واسع لتحقيق التوازن الصحيح بين التحدي والمتعة.
الاصطدامات والاستجابة
تأكد من أن اللعبة تتعامل مع الاصطدامات بين اللاعب والأشياء بشكل مناسب. قد تتسبب الكائنات المتحركة العشوائية في حدوث سيناريوهات تصادم غير متوقعة ، لذا خطط لذلك واختبرها بدقة.
الوضوح البصري
يجب أن تبرز الكائنات المتحركة العشوائية من الخلفية والعناصر الأخرى غير التفاعلية. يساعد هذا اللاعبين على فهم موقف اللعبة بسرعة والتخطيط لأفعالهم وفقًا لذلك. بامكانك ايضا إضافة مؤثرات صوتية على الأشياء الخاصة بك لجعلها تبرز.
تأثير الكائنات المتحركة العشوائية على لعبة Godot الخاصة بك
يمكن للأشياء المتحركة العشوائية أن تساهم بشكل كبير في جعل لعبة Godot أكثر جاذبية. يقدمون عنصرًا من عدم القدرة على التنبؤ يبقي اللاعبين في حالة تأهب. في كل مرة يبدأ فيها اللاعب اللعبة ، سوف يستقبلهم بتكوين مختلف للكائنات ، مما يزيد من قابلية إعادة اللعب.
علاوة على ذلك ، نظرًا لأن اللاعبين لا يستطيعون التنبؤ بمسار الأجسام المتحركة ، فعليهم أن يظلوا مركزين ومستجيبين للتنقل في بيئة اللعبة