กับดักจาง

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

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

ตั้งค่า

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

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

  2. ขยายขนาดเพื่อให้ผู้ใช้สามารถกระโดดบนมันได้

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

  4. ใส่ สคริปต์ ในส่วน เปลี่ยนชื่อเป็น FadeOnTouch รหัส

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


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

จางแพลตฟอร์ม

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

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

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

  • ตัวแปรควบคุม - ตัวแปรที่สร้างและใช้เพื่อนับลูป ในตัวอย่างนี้มันคือ count และมูลค่าเริ่มต้นคือ 1
  • ค่าสิ้นสุด - ค่าที่ต้องได้รับเพื่อให้ลูปหยุด ในตัวอย่างนี้คือ 10
  • การเพิ่มขั้นตอน (ตัวเลือก) - กำหนดสิ่งที่จะเพิ่มในตัวแปรควบคุมในแต่ละรอบหากถูกละเว้นจะเริ่มต้นที่ 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 ในแต่ละรอบซึ่งหมายความว่าแพลตฟอร์มของ 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 จะเกิดขึ้นทุกครั้งที่ส่วนของร่างกายของผู้ใช้มาสัมผัสกับส่วนหนึ่งพฤติกรรมนี้ทำให้เกิดปัญหาเมื่อผู้ใช้วิ่งข้ามแพลตฟอร์มที่จางไป: ฟังก์ชันจะทำงานหลายครั้งโดยรีเซ็ตลูปในแต่ละครั้ง

เพื่อให้โค้ดทำงานได้อย่างถูกต้อง ฟังก์ชันควรจะทำงานเพียงครั้งเดียวเมื่อผู้ใช้สัมผัสกับแพลตฟอร์มเป็นครั้งแรกการรับประกันว่าการดำเนินการจะถูกกระตุ้นเพียงครั้งเดียวเมื่อมันจะถูกกระตุ้นหลายครั้งนั้นเรียกว่า การยกเลิก เพื่อยกเลิกฟังก์ชัน แปร 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 สามารถใช้เพื่อเรียกร้องโค้ดเฉพาะในฟังก์ชันการจางได้เท่านั้นหากตัวแปรการยกเลิก isTouched เป็นเท็จห่อร่างกายของฟังก์ชันการจางไปในคําสั่ง 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)

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


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

สลับการยับยั้ง

ในขณะนี้โค้ดในฟังก์ชัน fade จะทำงานเสมอเพราะ isTouched เป็นเท็จและ not isTouched จะประเมินเป็นจริงเพื่อเสร็จสิ้นระบบ 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)