กับดักที่ซับซ้อน

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

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

การตั้งค่า

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

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

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

  3. ตรวจสอบให้แน่ใจว่ามันเป็น ติดขัด

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

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


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

กำลังลดพื้น

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

คุณสามารถเปลี่ยนสมบัติของ Transparency รหัสแต่การเปลี่ยนแปลงอย่างเหมาะสมจะต้องมีการเปลี่ยนแปลงอย่างน้อย 10 ครั้งระหว่าง 0 แล

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

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

กำลังกลับมา

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

  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)

ดีบั๊นซ์แปรแกรม

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

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

เพื่อดีบั๊นฟังก์ชัน ตัวแปร บูลีน สามารถใช้เพื่อติดตามเมื่อพื้นมีแล้ว ตัวแปร จริง และ ปลอม สามารถมีมูลค่าเป็น 1> true


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 เท่านั้นถ้าค่าตัวแปรที่เริ่มต้นออกจากโค้ดนั้นเป็นค่าเริ่มต้นของค่าตัวแปรที่เริ่มต้นออกจากโค้ดนั้น ด้วยคำวิเคร


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)

ผู้ประมวลผล Lua not ย้อนค่าของสิ่งที่ติดตามมัน ในเงื่อนไขของการเปลี่ยนแปลง สิ่งนี้หมายความว่าคำแรกของประโยคจะมีพฤติกรรมเหมือนสถานะที่ติดตามมา


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

เปิด/ปิดการเดบาวน์

ในปัจจุบัน, รหัสในคุณสมบัติ fade จะทำงานเสมอเพราะ isTouched เป็นปลอมและ not isTouched ประเมินไปยัง true. เพื่อให้เสร็จสิ้นวิธีการดีบาวน์, คุณจะต้องเป

  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)