استخدم هذه التقنية لتعزيز حركة العدو وسلوكه من خلال محاكاة الرؤية الأساسية.

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

في Godot، توفر عقدة RayCast2D طريقة بسيطة وفعالة لتحقيق اكتشاف خط البصر.

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

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

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

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

إليك كود GDScript لحركة اللاعب:

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

instagram viewer

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)

الآن، قم بإنشاء بعض المنصات ليتفاعل معها اللاعب. يمكنك استخدام StaticBody2D العقد ذات أشكال التصادم المناسبة لتمثيل المنصات. قم بترتيبها في المشهد لإنشاء بيئة منصة.

إعداد RayCast2D

لإنشاء كشف خط البصر، استخدم RayCast2D العقدة. وإليك كيف يمكنك إضافة RayCast2D العقدة باستخدام GDScript:

var raycast: RayCast2D

func _ready():
raycast = RayCast2D.new()
add_child(raycast)

تأكد من إرفاق هذا البرنامج النصي بـ شخصيةBody2D العقدة. يقوم مقتطف الكود هذا بإنشاء ملف جديد RayCast2D العقدة وإرفاقها كطفل بشخصية اللاعب.

تقديم تعليقات مرئية حول التفاعل على خط البصر

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

أضف الكود التالي إلى نفس البرنامج النصي:

func _physics_process(delta):
#... (previous movement code)

raycast.target_position = Vector2(100, 0)

if raycast.is_colliding():
print("Collided with platform!")

وهنا الإخراج:

توسيع وظائف RayCast2D

هناك العديد من الميزات المتقدمة التي يمكنك استخدامها لتحسين تفاعل اللعبة وتعقيدها بشكل كبير.

get_collider()

باستخدام get_collider() الطريقة، يمكنك الوصول إلى الكائن الأول الذي يتقاطع مع الشعاع. تُرجع الطريقة قيمة فارغة في حالة عدم وجود أي كائن في مسار الشعاع. يعد هذا مفيدًا بشكل خاص في تحديد الكائن المحدد الذي يتمتع اللاعب الخاص بك بخط رؤية له.

if raycast.is_colliding():
var collided_object = raycast.get_collider()

if collided_object:
print("You can see:", collided_object.name)

get_collider_rid()

ال get_collider_rid() يمكن أن تخبرك الطريقة بمعرف المورد (RID) للكائن الأول المتقاطع:

if raycast.is_colliding():
var collider_rid = raycast.get_collider_rid()

if !collider_rid.is_valid():
print("No valid object RID")
else:
print("Object RID:", collider_rid)

get_collider_shape()

ال get_collider_shape() ترجع الدالة معرف الشكل للكائن الأول المتقاطع، أو 0 في حالة عدم حدوث تصادم.

if raycast.is_colliding():
var collider_shape = raycast.get_collider_shape()

if collider_shape == 0:
print("No valid shape ID")
else:
print("Shape ID:", collider_shape)

get_collision_normal()

لفهم التفاعل بشكل أفضل، get_collision_normal() يزودك بالشكل الطبيعي عند نقطة الاصطدام. في الحالات التي يبدأ فيها الشعاع داخل الشكل و hit_from_inside صحيح، فإن عاد الطبيعي سيكون ناقل2(0, 0).

if raycast.is_colliding():
var collision_normal = raycast.get_collision_normal()
print("Collision Normal:", collision_normal)

get_collision_point()

عندما يتقاطع الشعاع مع جسم ما، get_collision_point() إرجاع نقطة الاصطدام الدقيقة في الإحداثيات العالمية.

if raycast.is_colliding():
var collision_point = raycast.get_collision_point()
print("Collision Point:", collision_point)

باستخدام هذه القدرات المتقدمة لل RayCast2D العقدة، يمكنك الحصول على رؤى مهمة حول التفاعلات بين الشعاع والأجسام المتصادمة.

تمكّنك هذه الأساليب من جمع المعلومات الأساسية التي يمكن أن تؤثر بشكل كبير على آليات اللعب وتفاعلات الكائنات وتعليقات اللاعبين.

بما في ذلك ميزات إضافية

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

مشغلات الحدث

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

التعامل مع العوائق الديناميكية

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

المؤشرات المرئية المخصصة

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

ضباب ميكانيكا الحرب

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

أفضل الممارسات للكشف عن خط البصر

يعد تحسين اكتشاف خط البصر أمرًا ضروريًا للحفاظ على تجربة لعب سلسة. فيما يلي بعض أفضل الممارسات التي يجب وضعها في الاعتبار.

تردد البث

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

طول الشعاع

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

طبقات الاصطدام

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

نتائج التخزين المؤقت

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

التكامل على مستوى المنصات

قم بمحاذاة آليات الكشف عن خط البصر مع تصميم المستوى لعبة منهاج الخاص بك. ضع في اعتبارك الوضع العمودي للبيئة، وارتفاعات المنصة المختلفة، والعقبات المحتملة التي قد تعيق خط الرؤية.

تأكد من أن نظام الكشف الخاص بك يستوعب هذه الفروق الدقيقة لإنشاء تجربة لعب سلسة وبديهية.

جعل ألعاب Godot أكثر جاذبية من خلال اكتشاف خط البصر

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