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

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


قم بإدراج Script في جزء LavaFloor وقم بإعادة تسميته إلى Kill.

قم بإزالة الكود الافتراضي وأنشئ متغيرًا لللافا.
local lava = script.Parent
الاتصال بحدث
استخدم حدثًا لاكتشاف متى يلمس المستخدم اللافا. تمتلك كل جزء حدث Touched يت firing عندما يلمس شيء ما. يمكنك الاتصال بهذا الحدث لتشغيل وظيفة عند حدوثه.
قم بإعلان وظيفة جديدة تُسمى 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 الجزء الذي لمس أرضية اللافا، وسيكون بإمكان الكود الذي ستكتبه في الوظيفة استخدامه.
الشخصية والهيكل البشري
عندما يلمس مستخدم اللافا، يمكن لروبلكس اكتشاف الجزء المحدد من جسم المستخدم الذي لمسه، مثل الساق اليسرى أو القدم اليمنى. هذا الجزء هو في نموذج الشخصية الخاصة بالمستخدم، الذي يحتوي على جميع الكائنات التي تشكل صورة المستخدم في التجربة، بما في ذلك:
- أجزاء الجسم الفردية للمستخدم مثل الرأس، الأطراف، والجذع.
- أي ملابس وإكسسوارات يرتديها المستخدم.
- Humanoid، كائن خاص يحتوي على العديد من الخصائص المتعلقة بالمستخدم، بما في ذلك صحة المستخدم.
- HumanoidRootPart الذي يتحكم في حركة المستخدم.
كما تم الإشارة إليه سابقًا، أي جزء من الجسم يلمس اللافا هو جزء من نموذج الشخصية، لذا يمكنك الحصول على مرجع لتلك الشخصية باستخدام otherPart.Parent. أنشئ متغيرًا لتخزين الوالد للجزء الذي لمس أرضية اللافا.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
من نموذج الشخصية، ستحتاج إلى الحصول على كائن الهيكل البشري لكي تقتل المستخدم. يمكنك فعل ذلك باستخدام وظيفة FindFirstChild() - فقط مرر لها اسم الشيء الذي تبحث عنه وستقوم بإرجاع الطفل matching الأول الذي تجده في ذلك الكائن. استدعِ 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)