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

اجعل الأرضية تبدو أكثر مثل اللافا عن طريق تعيين خاصية Material إلى Neon ولونها إلى ظل برتقالي.


أدخل Script في جزء LavaFloor وأعد تسميته إلى Kill.

قم بإزالة الكود الافتراضي وأنشئ متغيرًا لللافا.
local lava = script.Parent
الاتصال بحدث
استخدم حدثًا لاكتشاف متى يلمس المستخدم اللافا. كل جزء لديه حدث Touched يتم تفعيله عندما يلمس شيء ما. يمكنك الاتصال بهذا الحدث لتشغيل دالة عندما يتم تفعيله.
أعلن عن دالة جديدة تسمى kill.
الوصول إلى حدث Touched على كائن اللافا باستخدام نقطة، تمامًا مثل خاصية: lava.Touched.
استدعِ دالة Connect على حدث Touched، مع تمرير kill() كالدالة التي سيتم استدعاؤها عند لمس الجزء.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
أي كود تكتبه في دالة kill سيعمل الآن كلما لمس شيء ما اللافا. لاحظ أنه يتم استخدام نقطة لدالة Connect، وليس نقطة - لا تقلق بشأن السبب في هذه المرحلة، فقط تذكر الفرق.
الحصول على الجزء الملامس
لقتل المستخدم، ستحتاج الدالة إلى كائن مرتبط بذلك المستخدم. يمكن لحدث Touched لجزء ما أن يوفر "الجزء الآخر" الذي لمسه - ولكن فقط إذا طلبت ذلك من خلال جعله معاملًا للدالة.
المعاملات هي تعريفات لما تتوقع الدالة استلامه عند استدعائها. يمكن استخدام معامل في دالة تمامًا مثل أي متغير آخر. يمكنك تمرير معلومات إلى معامل عن طريق تضمينه في الأقواس عند استدعاء دالة. يتم تعريف المعاملات في الأقواس في السطر الأول من الدالة. أنشئ معاملًا يسمى otherPart لدالة kill.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)عندما يتم استدعاء دالة kill، سيمثل معامل otherPart الجزء الذي لمس أرضية اللافا، وسيكون الكود الذي ستكتبه في الدالة قادرًا على استخدامه.
الشخصية والهيكل البشري
عندما يلمس المستخدم اللافا، يمكن لروبلكس اكتشاف الجزء المحدد من جسم المستخدم الذي لمسه، مثل الساق اليسرى أو القدم اليمنى. هذا الجزء موجود في نموذج Character الخاص بالمستخدم، والذي يحتوي على جميع الكائنات التي تشكل صورة المستخدم في اللعبة، بما في ذلك:
- أجزاء الجسم الفردية للمستخدم مثل الرأس والأطراف والجذع.
- أي ملابس وإكسسوارات يرتديها المستخدم.
- Humanoid، كائن خاص يحتوي على العديد من الخصائص المتعلقة بالمستخدم، بما في ذلك صحة المستخدم.
- HumanoidRootPart الذي يتحكم في حركة المستخدم.
كما تم الإشارة سابقًا، أي جزء من الجسم يلمس اللافا هو جزء من نموذج Character، لذا يمكنك الحصول على مرجع لذلك الشخصية باستخدام otherPart.Parent. أنشئ متغيرًا لتخزين والد الجزء الذي لمس أرضية اللافا.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)من نموذج الشخصية، ستحتاج إلى الحصول على كائن الهيكل البشري من أجل قتل المستخدم. يمكنك القيام بذلك باستخدام دالة FindFirstChild() - فقط مرر اسم الشيء الذي تبحث عنه وستوفر أول طفل مطابق تجده في ذلك الكائن. استدعِ FindFirstChild() على متغير partParent مع "Humanoid" كطفل للعثور عليه، واحتفظ بالنتيجة في متغير جديد يسمى humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)تحقق من الهيكل البشري
يمكنك بسهولة التحقق مما إذا كان الهيكل البشري قد تم العثور عليه باستخدام جملة if. سيعمل الكود في جملة if فقط إذا كانت الشرط المحدد في السطر الأول صحيحًا.
هناك مجموعة متنوعة من المشغلين التي يمكن استخدامها لبناء شروط أكثر تعقيدًا ستواجهها في الدورات المستقبلية - في الوقت الحالي، فقط ضع متغير humanoid هناك. أنشئ جملة if مع humanoid كشرط.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)تعيين صحة الشخصية
الآن بعد التحقق من Humanoid، يمكن تغيير خصائصه. إذا قمت بتعيين خاصية Health إلى 0، فإن الشخصية المرتبطة تموت. في جسم جملة if، قم بتعيين خاصية Health للهيكل البشري إلى 0.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)بهذا، تكون أرضية اللافا الخاصة بك مكتملة! اختبر لعبتك ويجب أن تجد أن لافاك القاتلة تقتل المستخدمين بنجاح عند الاتصال. حاول استخدام لافاك كتحدي إضافي في obby، أو كحدود لعالم.
الكود النهائي
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)