ใน Deadly Lava คุณได้เรียนรู้วิธีการเรียกใช้โค้ดตามพฤติกรรมของผู้ใช้ โปรแกรมนี้แสดงให้คุณเห็นวิธีการสร้างแพลตฟอร์มที่จางหายไปเมื่อผู้ใช้เหยียบไปที่มัน
การตั้งค่า
หากคุณติดตาม Deadly Lava คุณสามารถวางแพลตฟอร์มของคุณได้ด้านบนพื้นลาวาที่ผู้ใช้ไม่สามารถกระโดดข้ามได้
ใส่ชิ้นส่วนและย้ายไปยังสถานที่ในโลกของคุณ เรียกมันว่า FadingPlatform
ปรับขนาดให้เล็กลงเพื่อให้ผู้ใช้สามารถกระโดดได้
ตรวจสอบให้แน่ใจว่ามันเป็น ติดขัด
ใส่ สคริปต์ ในส่วนนี้, เปลี่ยนชื่อมันเป็น FadeOnTouch , และลบรหัสเริ่มต้น
สร้างตัวแปรสำหรับแพลตฟอร์มและการเรียกฟังก์ชันที่ว่างเปล่าที่เชื่อมต่อกับเหตุการณ์ Touched ของแพลตฟอร์ม
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
กำลังลดพื้น
การที่พื้นมุ่งหมายหายไปในทันทีจะไม่สนุกเลยนะเนื่องจากผู้ใช้จะพบว่ายากที่จะข้ามช่องว่าง แทนที่พื้นควร จางออก ปิด
คุณสามารถเปลี่ยนสมบัติของ Transparency รหัสแต่การเปลี่ยนแปลงอย่างเหมาะสมจะต้องมีการเปลี่ยนแปลงอย่างน้อย 10 ครั้งระหว่าง 0 แล
สิ่งนี้สามารถทำได้มากขึ้นโดยใช้วงจร for ซึ่งทำซ้ำโค้ดเป็นครั้งคราวโดยมีเวลาที่กำหนดไว้ แต่ละวงจรของโค้ดเรียกว่า iteration สำหรับวงจรของโค้ดจะถูกกำหนดด้วยสามสิ่งที่แยกกับ
- ควบคุมแปร - แปรที่สร้างและใช้เพื่อนับห่วงโปร ในตัวอย่างนี้, มันเป็น count และมูลค่าเริ่มต้นคือ 1
- ค่านิยมสิ้นสุด - ค่าที่มันต้องไปถึงเพื่อให้วงจรหยุด ในตัวอย่างนี้มันคือ 10
- ขั้นตอนเพิ่ม (อpcional) - กำหนดว่าจะเพิ่มตัวแปรควบคุมใด ๆ ในแต่ละห่วง หากออกออกจะเป็น 1 จึงไม่จำเป็นในตัวอย่างนี้
ใน FadeOnTouch :
ในคุณสมบัติ, สร้างลูป for ที่เริ่มตั้งแต่ 1 ซึ่งเริ่มซ้ำ 10 ครั้ง
ใน for ห้องนี้, ตั้งค่าคุณสมบัติ Transparency ให้กับตัวแปรควบคุมที่แบ่งออกเป็น 10
เรียกฟังก์ชัน task.wait() ด้วยเวลา 0.1
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endendplatform.Touched:Connect(fade)
เมื่อวงจรทำงานจะเพิ่มขึ้น 1 เมื่อสิ้นสุดแต่ละครั้ง ซึ่งหมายความว่า Transparency ของแพลตฟอร์มจะเพิ่มขึ้น 0.1 ทุก 0.1 วินาทีจนกว่าจะถึงความโปร่งใสสมบูรณ์หลังจาก 1 วินาที
กำลังกลับมา
หลังจากที่แพลตฟอร์มได้หายไป ผู้ใช้ควรตกผ่านมัน แพลตฟอร์มควรมาใหม่อีกครั้งในไม่กี่วินาทีหลังจากที่มันหายไป - อย่างไรก็ตาม, ผู้ใช้จะไม่สามารถลองกระโดดอีกครั้งหากพวกเขาล้มผ่านไป
ตั้งค่าสมบัติของ CanCollide ของแพลตฟอร์มให้เป็น false หลังจาก for เล็ง.
รอสักครู่โดยใช้งาน task.wait() ฟังก์ชัน
ตั้งค่าสมบัติของ CanCollide กลับไปที่ true
ตั้งค่าสมบัติของ Transparency กลับไปที่ 0
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endplatform.CanCollide = falsetask.wait(3)platform.CanCollide = trueplatform.Transparency = 0endplatform.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 thenendif isTouched == false thenendif isTouched == nil thenend
เปิด/ปิดการเดบาวน์
ในปัจจุบัน, รหัสในคุณสมบัติ fade จะทำงานเสมอเพราะ isTouched เป็นปลอมและ not isTouched ประเมินไปยัง true. เพื่อให้เสร็จสิ้นวิธีการดีบาวน์, คุณจะต้องเป
- ตั้ง isTouched เป็น true ภายในข้อความ if ก่อนที่พื้นจะเริ่มหายไป
- ตั้งค่ากลับเป็น 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)