กับดักที่จางหาย

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

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

ตั้งค่า

หากคุณได้ติดตาม ลาวาที่อันตราย คุณสามารถวางแพลตฟอร์มที่จางหายของคุณเหนือพื้นลาวาที่ผู้ใช้ไม่สามารถกระโดดข้ามได้

  1. แทรกส่วนหนึ่งและย้ายมันไปยังตำแหน่งในโลกของคุณ ตั้งชื่อมันว่า FadingPlatform

  2. ปรับขนาดให้ผู้ใช้สามารถกระโดดขึ้นไปได้

  3. ตรวจสอบให้แน่ใจว่ามันถูก Anchored

  4. แทรก Script ลงในส่วนนี้ เปลี่ยนชื่อเป็น FadeOnTouch และลบโค้ดเริ่มต้นออก

  5. สร้างตัวแปรสำหรับแพลตฟอร์มและฟังก์ชันว่างที่เชื่อมต่อกับเหตุการณ์ Touched ของแพลตฟอร์ม

    local platform = script.Parent
    local function fade()
    end
    platform.Touched:Connect(fade)

ทำให้แพลตฟอร์มจางหาย

การทำให้แพลตฟอร์มหายไปในทันทีจะไม่สนุกเลยเพราะผู้ใช้จะพบว่ามันเป็นไปไม่ได้ที่จะข้ามช่องว่าง แพลตฟอร์มควร จางหายไป ก่อนที่ผู้ใช้จะตกผ่านมันเพื่อให้พวกเขามีโอกาสกระโดดออกไป

คุณสามารถเปลี่ยนคุณสมบัติ Transparency และรอเวลาสั้น ๆ ซ้ำ ๆ เพื่อให้ได้ผลนี้ แต่การจางหายอย่างค่อยเป็นค่อยไปจะต้องมีการเปลี่ยนแปลงอย่างน้อย 10 ครั้งระหว่าง 0 และ 1 นั่นคือ 20 บรรทัดของโค้ดที่ซ้ำซาก

สิ่งนี้สามารถทำได้อย่างมีประสิทธิภาพมากขึ้นโดยใช้ for ลูปซึ่งทำซ้ำโค้ดจำนวนครั้งที่กำหนด ทุก ๆ ลูปของโค้ดจะเรียกว่า iteration ลูป for จะถูกกำหนดด้วยสามสิ่งที่แยกจากกันด้วยเครื่องหมายจุลภาค:

  • ตัวแปรควบคุม - ตัวแปรที่สร้างขึ้นและใช้ในการนับลูป ในตัวอย่างนี้คือ count และค่าตั้งต้นคือ 1
  • ค่าจบ - ค่าที่ต้องไปถึงเพื่อให้ลูปหยุด ในตัวอย่างนี้คือ 10
  • การเพิ่มขั้นตอน
    OPTIONAL
    - กำหนดสิ่งที่จะเพิ่มให้กับตัวแปรควบคุมในแต่ละลูป หากไม่ระบุ จะใช้ค่าเริ่มต้นเป็น 1 ดังนั้นในตัวอย่างนี้จึงไม่จำเป็น

ใน FadeOnTouch:

  1. ในฟังก์ชัน สร้างลูป for เริ่มจาก 1 ซึ่งทำซ้ำ 10 ครั้ง

  2. ภายในลูป for ตั้งค่าคุณสมบัติ Transparency ให้เท่ากับตัวแปรควบคุมหารด้วย 10

  3. เรียกใช้ฟังก์ชัน task.wait() โดยมีเวลาที่ 0.1

    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    end
    platform.Touched:Connect(fade)

เมื่อรันลูป ตัวนับจะเพิ่มขึ้น 1 ในแต่ละ iteration ซึ่งหมายความว่าคุณสมบัติ Transparency ของแพลตฟอร์มจะเพิ่มขึ้น 0.1 ทุก ๆ 0.1 วินาที จนถึงความโปร่งใสเต็มที่หลังจาก 1 วินาที

ปรากฏอีกครั้ง

หลังจากที่แพลตฟอร์มหายไป ผู้ใช้ควรตกผ่านมัน แพลตฟอร์มควรกลับมาอีกครั้งหลังจากที่มันจางหายไปไม่กี่วินาที มิฉะนั้น ผู้ใช้จะไม่มีโอกาสลองกระโดดอีกครั้งหากพวกเขาล้มเหลว คุณสมบัติ CanCollide ควบคุมว่าผู้ใช้สามารถตกผ่านส่วนได้หรือไม่

  1. ตั้งค่าคุณสมบัติ CanCollide ของแพลตฟอร์มเป็น false หลังจากลูป for

  2. รอไม่กี่วินาทีโดยใช้ฟังก์ชัน task.wait()

  3. ตั้งค่าคุณสมบัติ CanCollide กลับเป็น true

  4. ตั้งค่าคุณสมบัติ Transparency กลับเป็น 0

    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    platform.CanCollide = false
    task.wait(3)
    platform.CanCollide = true
    platform.Transparency = 0
    end
    platform.Touched:Connect(fade)

ตัวแปร Debounce

ใน ลาวาที่อันตราย คุณได้เรียนรู้ว่าเหตุการณ์ Touched จะทำงานทุกครั้งที่ส่วนของร่างกายของผู้ใช้สัมผัสกับส่วนนี้ พฤติกรรมนี้ทำให้เกิดปัญหาเมื่อผู้ใช้วิ่งข้ามแพลตฟอร์มที่จางหาย: ฟังก์ชันจะทำงานหลายครั้ง ทำให้ลูปรีเซ็ตทุกครั้ง

เพื่อให้โค้ดทำงานได้อย่างถูกต้อง ฟังก์ชันควรทำงานเพียงครั้งเดียวเมื่อผู้ใช้สัมผัสแพลตฟอร์มเป็นครั้งแรก การทำให้แน่ใจว่าการกระทำจะถูกเรียกใช้เพียงครั้งเดียวเมื่อมันจะถูกเรียกใช้หลายครั้งเรียกว่า debouncing

ในการ debounce ฟังก์ชัน สามารถใช้ตัวแปร boolean เพื่อติดตามว่าแพลตฟอร์มถูกสัมผัสแล้วหรือไม่ Boolean สามารถมีค่าได้เพียง true และ false สร้างตัวแปรชื่อ isTouched และตั้งค่าเป็น false

local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)

ตรวจสอบตัวแปร

สามารถใช้คำสั่ง if เพื่อให้โค้ดในฟังก์ชัน fade ทำงานเฉพาะเมื่อค่าตัวแปร debounce isTouched เป็น false ห่อหุ้มเนื้อหาของฟังก์ชัน fade ในคำสั่ง if ที่มีเงื่อนไขว่า not isTouched

local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)

ตัวดำเนินการ not ของ Luau จะกลับค่าของสิ่งที่ตามมา ในแง่ของเงื่อนไข หมายความว่าคำสั่ง if แรกทำงานเหมือนกับคำสั่งที่ตามมา

if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
end

สลับการ debounce

ในขณะนี้ โค้ดในฟังก์ชัน fade จะทำงานเสมอเพราะ isTouched เป็น false และ not isTouched จะประเมินเป็น true เพื่อให้เสร็จสิ้นการ debounce คุณจะต้องสลับค่าของตัวแปรในสองสถานที่

  1. ตั้งค่า isTouched เป็น true ภายในคำสั่ง if ก่อนที่แพลตฟอร์มจะเริ่มจางหาย
  2. ตั้งค่ากลับเป็น false เมื่อแพลตฟอร์มกลับมาอีกครั้ง
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)

และนั่นคือทั้งหมด! ทดสอบโค้ดของคุณตอนนี้ และคุณควรพบว่าแพลตฟอร์มจางหายไปเมื่อผู้ใช้กระโดดขึ้นไปและกลับมาอีกไม่กี่วินาทีต่อมา

คุณสามารถทำสำเนาแพลตฟอร์มนี้ในช่องว่างที่กว้างขึ้นเพื่อสร้างอุปสรรคที่ท้าทายและเปลี่ยนความเร็วที่มันจางหายเพื่อปรับสมดุลความยาก

โค้ดสุดท้าย

local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ