ใน บทนำเกี่ยวกับการเขียนสคริปต์ คุณได้เรียนรู้วิธีการทำการเปลี่ยนแปลงในประสบการณ์ในลูปตามเวลา ทำอย่างไรหากคุณต้องการทำการเปลี่ยนแปลงตามพฤติกรรมของผู้ใช้? ในบทนี้คุณจะได้เรียนรู้วิธีการสร้างพื้นลาวาที่ทำให้ตายซึ่งฆ่าผู้ใช้เมื่อพวกเขายืนอยู่บนมัน
ตั้งค่า
คุณต้องมีพื้นที่ในโลกของคุณเพื่อวางลาวาที่ทำให้ตาย ถ้าคุณได้ทำตามหลักสูตร บทนำเกี่ยวกับการเขียนสคริปต์ พื้นลาวาจะพอดีกับช่องว่างที่ถูกปกคลุมด้วยแพลตฟอร์มที่หายไป
ใส่ Part และย้ายมันไปยังตำแหน่งในโลกของคุณ ตั้งชื่อมันว่า LavaFloor.
ปรับขนาดให้มันปิดพื้นที่พื้นของพื้นที่ที่กำลังล้อมอยู่

ทำให้พื้นดูเหมือนลาวามากขึ้นโดยการตั้งค่า Material เป็น Neon และ Color เป็นเฉดสีส้ม


ใส่ 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 จะเป็นตัวแทนของส่วนที่สัมผัสพื้นลาวา และโค้ดที่คุณเขียนในฟังก์ชันจะสามารถใช้มันได้
ตัวละครและมนุษย์
เมื่อผู้ใช้สัมผัสลาวา Roblox สามารถตรวจจับร่างกายเฉพาะส่วนใดส่วนหนึ่งของผู้ใช้ที่สัมผัสมัน เช่น ขาซ้ายหรือเท้าขวา ส่วนนี้อยู่ในโมเดล ตัวละคร ของผู้ใช้ ซึ่งประกอบไปด้วยวัตถุทั้งหมดที่สร้างตัวละครของผู้ใช้ในประสบการณ์ รวมถึง:
- ส่วนประกอบร่างกายของผู้ใช้ เช่น หัว แขน และลำตัว
- เสื้อผ้าและอุปกรณ์เสริมที่ผู้ใช้สวมใส่
- Humanoid ซึ่งเป็นวัตถุพิเศษที่มีคุณสมบัติหลายอย่างที่เกี่ยวข้องกับผู้ใช้ รวมถึงสุขภาพของผู้ใช้
- HumanoidRootPart ซึ่งควบคุมการเคลื่อนไหวของผู้ใช้
ตามที่ได้กล่าวไว้ก่อนหน้านี้ ทุกส่วนของร่างกายที่สัมผัสลาวาเป็นส่วนหนึ่งของโมเดลตัวละคร ดังนั้นคุณสามารถอ้างอิงถึงตัวละครนั้นได้ด้วย otherPart.Parent สร้างตัวแปรเพื่อเก็บพาเรนต์ของส่วนที่สัมผัสพื้นลาวา
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
จากโมเดลตัวละคร คุณจะต้องได้รับวัตถุ Humanoid เพื่อฆ่าผู้ใช้ คุณสามารถทำได้ด้วยฟังก์ชัน 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 โค้ดในคำสั่งถ้าเท่านั้นที่จะทำงานหากเงื่อนไขที่กำหนดในบรรทัดแรกเป็นจริง
มี ตัวดำเนินการ หลากหลายที่สามารถใช้เพื่อสร้างเงื่อนไขที่ซับซ้อนมากขึ้นซึ่งคุณจะพบในหลักสูตรในอนาคต - ในตอนนี้ เพียงใส่ตัวแปร 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 ของ humanoid เป็น 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)