SCRIPT BOX · LESSON 05

เปิดกล่อง
สคริปต์

คัดลอก Lua Script จากบทเรียนของมองค่อยไปทดลองใน Roblox Studio ได้ทันที เริ่มจากกับดักง่าย ๆ แล้วต่อยอดเป็นด่านที่สนุกขึ้นทีละบล็อก

COPY · PASTE · PLAY

คลังสคริปต์เริ่มต้น

ทุกใบเป็นโค้ดจากบทเรียนคนที่ 5 เลือกการ์ด กดคัดลอก แล้ววางลงใน Script ที่อยู่ใต้ Part ให้ถูกชิ้น

01 · TOUCHED EVENTBEGINNER

พื้นกับดัก

เหยียบแล้วกระพริบ 3 ครั้ง หายไป 2 วินาที แล้วกลับมาใหม่

Script — Trap
local trap = script.Parent
local busy = false

local function onTouched(hit)
    local character = hit:FindFirstAncestorOfClass("Model")
    local humanoid = character and character:FindFirstChildOfClass("Humanoid")

    if not humanoid or busy then
        return
    end

    busy = true

    for count = 1, 3 do
        trap.Transparency = 0.6
        task.wait(0.25)
        trap.Transparency = 0
        task.wait(0.25)
    end

    trap.Transparency = 1
    trap.CanCollide = false
    task.wait(2)
    trap.Transparency = 0
    trap.CanCollide = true
    busy = false
end

trap.Touched:Connect(onTouched)

!วาง Script ไว้ใน Part ที่ชื่อ Trap และตั้ง CanTouch เป็น true

02 · RUNSERVICEBEGINNER

ใบพัดหมุน

ทำ Spinner ให้หมุนลื่นด้วย Heartbeat และความเร็วที่ปรับได้

Script — Spinner
local RunService = game:GetService("RunService")

local spinner = script.Parent
local speed = 90

spinner.Anchored = true

RunService.Heartbeat:Connect(function(deltaTime)
    local angle = math.rad(speed * deltaTime)
    spinner.CFrame = spinner.CFrame * CFrame.Angles(0, angle, 0)
end)

!ลองเปลี่ยน speed = 90 เป็น 180 เพื่อเพิ่มความเร็ว หรือ -90 เพื่อหมุนกลับทิศ

03 · TWEENSERVICELEVEL UP

แพลตฟอร์มไป–กลับ

สร้างพื้นเคลื่อนที่อัตโนมัติแบบนุ่มนวลและวนซ้ำได้

Script — MovingPlatform
local TweenService = game:GetService("TweenService")

local platform = script.Parent
local distance = 30
local moveTime = 3
local startDelay = 0.5

platform.Anchored = true

local target = platform.CFrame * CFrame.new(0, 0, distance)

local settings = TweenInfo.new(
    moveTime,
    Enum.EasingStyle.Sine,
    Enum.EasingDirection.InOut,
    -1,
    true,
    startDelay
)

local movement = TweenService:Create(
    platform,
    settings,
    {CFrame = target}
)
movement:Play()

!เปลี่ยน distance เพื่อกำหนดระยะ และ moveTime เพื่อปรับความเร็ว

04 · SOUND OBJECTBONUS

กับดักมีเสียง

เพิ่มเสียงแจ้งเตือนเมื่อผู้เล่นเหยียบ Trap ให้เกมมีชีวิตขึ้น

Script — TrapSound
local trap = script.Parent
local trapSound = trap:WaitForChild("TrapSound")
local busy = false

trap.Touched:Connect(function(hit)
    local character = hit:FindFirstAncestorOfClass("Model")
    local humanoid = character and character:FindFirstChildOfClass("Humanoid")

    if not humanoid or busy then
        return
    end

    busy = true
    trapSound:Play()
    trap.Transparency = 1
    trap.CanCollide = false

    task.wait(2)
    trap.Transparency = 0
    trap.CanCollide = true
    busy = false
end)

!เพิ่มวัตถุ Sound ไว้ใน Trap แล้วตั้งชื่อให้ตรงว่า TrapSound

ภารกิจของวันนี้: เปลี่ยนเพียง 1 ค่า

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

ไปดูคำอธิบายในสไลด์คนที่ 5 ↗