이 프로젝트는 실용적인 방식으로 for 루프를 사용하는 또 다른 예입니다. 이 다리에서는 플레이어가 버튼을 눌러 제한된 시간 동안 걸을 수 있는 다리를 만들고, 그 후에 다리가 사라집니다. 타이머를 만들고 플레이어에게 남은 시간을 보여주기 위해 for 루프를 사용합니다.
프로젝트 설정
이 다리는 오비와 같은 움직임 기반 도전이 포함된 Roblox 프로젝트에 포함될 수 있습니다.
부품 만들기
다리를 지을 장소를 찾습니다. 예를 들어, 강이나 오비의 큰 간격 같은 곳입니다. 아래와 같이 세 개의 고정된 부품을 만듭니다.
- TimerDisplay
- Bridge
- ButtonBridge

비활성 상태일 때 다리는 반투명하게 나타납니다. 그렇게 하려면 Bridge를 선택하고 속성을 변경합니다.
- 투명도 = 0.8
- 충돌 가능 = False
타이머 디스플레이 만들기
플레이어가 다리를 건널 때, 다리가 사라지기 전에 몇 초가 남았는지 확인할 수 있어야 합니다. 이미지를 표시하거나 텍스트를 표시하는 한 가지 방법은 부품에 Surface GUI라는 객체를 추가하는 것입니다. Surface GUI는 게임 내 표지판, 사용자 정의 건강 바 및 인벤토리 시스템을 만드는 데에도 사용될 수 있습니다. 이 튜토리얼에서는 이를 빠르게 진행하겠지만, 더 많은 정보는 튜토리얼 섹션에서 찾을 수 있습니다.
TimerDisplay를 선택하고 SurfaceGui를 추가합니다. 그런 다음 Surface Gui에 TextLabel을 추가합니다.

Surface GUI를 선택합니다. 속성에서 다음 변경 내용을 적용합니다:
- Face를 변경하여 플레이어가 보는 타이머 전면에 텍스트 레이블이 보이도록 합니다.
TextLabel을 선택합니다. 속성에서 다음 변경 사항을 적용합니다:
- Size를 {1, 0},{1, 0}으로 설정합니다.
- TextScaled를 true로 설정합니다.
- Text를 빈 칸으로 설정합니다. 텍스트는 스크립트를 사용하여 업데이트됩니다.
스크립트 설정
이제 타이머가 준비되었으므로, 다리를 제어하고 플레이어에게 카운트다운 숫자를 표시할 스크립트를 생성합니다.
Bridge 부품에 TimedBridge라는 새로운 스크립트를 추가합니다. 해당 스크립트에서 다음 변수를 생성합니다.
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- 다리가 견고하게 유지되는 시간local timerDuration = 5
터치 상호작용 코딩
다리를 사용하려면 두 가지 기능을 만들어야 합니다. 하나의 기능은 다리를 걸을 수 있게 하고 타이머를 표시합니다. 다른 기능은 플레이어가 다리를 활성화하는 버튼을 터치하는지 감지합니다.
startTimer()라는 새 함수를 만들고 그 안에 print 문을 추가합니다. print 문을 사용하여 코드를 테스트할 것입니다.
local timerDuration = 5local function startTimer()print("카운트다운 시작됨")end버튼을 누르면 인간 캐릭터가 버튼에 터치했는지를 확인하는 buttonPressed()라는 기능을 코딩합니다. 함수는 partTouched라는 매개변수를 받아야 하며, 인식된 부품에 인간 캐릭터가 감지되었을 때 빈 if 문을 가집니다.
local function startTimer()print("카운트다운 시작됨")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendend카운트다운 타이머를 시작하기 위해 if 문 안에서 startTimer() 함수를 호출합니다.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbuttonPressed() 종료 후에 버튼의 Touched 이벤트와 buttonPressed() 함수를 연결합니다.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)프로젝트를 실행합니다. 부품을 터치하고 출력 창에서 print 문을 확인합니다.
문제 해결 팁
이 시점에서, 다리가 의도대로 작동하지 않으면 아래의 방법 중 하나를 시도해보세요.
문제: "...는 workspace의 유효한 구성원이 아닙니다"라는 오류 메시지.
- TimedBridge 스크립트에서 모든 부품의 철자가 Explorer에 표시된 것 그대로 정확하게 입력되었는지 확인합니다.
문제: 부품이 보이지 않음.
- 모든 세 개의 부품이 고정되어 있는지 확인합니다.
- 다리의 투명도 속성을 확인합니다.
타이머 만들기
플레이어가 다리에 발을 디딜 때마다 startTimer()는 다리를 걸을 수 있게 하고 타이머를 시작합니다. 타이머가 0에 도달하면 다리는 걷기 불가능하게 되어 그보다 느린 사람은 떨어지게 됩니다.
다리를 걷기 가능하게 만들기
시작할 때 스크립트는 다리를 견고하게 만들고, 걸을 수 있게 한 다음, 다리가 다시 걷기 불가능하게 될 때까지 타이머를 시작해야 합니다.
다리를 걷기 가능하게 만들기 위해 startTimer()에서 다리의 투명도를 0(불투명)으로, CanCollide 속성을 true로 변경합니다.
local function startTimer()-- 다리를 가시적이고 걷기 가능하게 만들기bridge.Transparency = 0bridge.CanCollide = trueend카운트다운을 실행할 포 루프를 생성합니다. 다음과 같은 값을 가집니다.
- 제어 변수: count라는 이름으로 설정하고 timerDuration으로 초기화합니다.
- 끝: 0
- 증가: -1
local function startTimer()-- 다리를 가시적이고 걷기 가능하게 만들기bridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendend플레이어에게 타이머를 표시하기 위해 timerText에서 카운트를 표시할 수 있도록 timerText.Text = count를 입력합니다. 포 루프의 각 반복에서 플레이어에게 타이머의 다음 숫자를 보여줍니다.
for count = timerDuration, 0, -1 dotimerText.Text = countend포 루프가 1초마다 한 번 실행되도록 하려면 task.wait 함수를 사용합니다.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end경험을 실행합니다. 버튼을 터치했을 때 다리가 나타나고 타이머가 시작되며 완료되어야 합니다.
다리가 다시 시작되지 않도록 하기
하지만, 버튼 위에서 움직이면 타이머가 계속 다시 시작되는 것을 주의하세요.
이는 버튼을 터치할 때마다 포 루프가 호출되고, 포 루프가 처음부터 시작되고 있기 때문입니다. 타이머가 지속적으로 다시 시작되지 않도록 하려면 메인 타이머 함수를 호출할 수 있는지 여부를 제어하는 부울 변수를 추가해야 합니다.
부울은 다른 변수와 동일한 방식으로 작성되지만, 숫자나 문자열을 사용하기보다는 true 또는 false로만 설정할 수 있습니다. 이 상황에서는 스크립트가 타이머가 현재 실행되고 있는지 확인하기 위해 부울을 사용할 것입니다.
스크립트 상단에서 변수 아래에 timerActive라는 변수를 만들고 처음에는 false로 설정합니다. 버튼이 눌리지 않았기 때문입니다.
local timerDuration = 5local timerActive = falselocal function startTimer()timerActive 부울이 false일 때만 타이머가 시작되도록 버튼이 눌린 경우 buttonPressed()의 if 문에 두 번째 조건을 추가합니다.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endend타이머가 끝날 때까지 다시 실행되지 않도록 timerActive 부울을 true로 설정합니다.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = truestartTimer() 함수에서 포 루프 후에 다리의 투명도를 0.8로 변경하고 CanCollide를 false로 바꿔 다리를 원래 상태로 되돌립니다.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- timerDuration부터 카운트다운하는 포 루프for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- 다리를 걷기 불가능하게 만들기bridge.Transparency = 0.8bridge.CanCollide = falseend마지막으로 다리를 초기 상태로 리셋하기 위해 timerText를 빈 문자열로 변경하십시오. 그리고 timerActive 부울을 false로 설정합니다.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = false테스트 플레이하며 다리를 여러 번 사용할 수 있는지 확인합니다.
완성된 타이머 다리 스크립트
local bridge = script.Parent
-- Explorer에 입력된 대로 버튼을 가져옵니다.
local button = workspace.ButtonBridge
-- 디스플레이 부품을 가져옵니다.
local timerPart = workspace.TimerDisplay
-- 타이머를 표시할 텍스트를 가져옵니다.
local timerText = timerPart.SurfaceGui.TextLabel
-- 플레이어가 다리를 건너는 시간이 얼마나 되는지
local timerDuration = 5
local timerActive = false
local function startTimer()
print("카운트다운 시작됨")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- timerDuration부터 카운트다운하는 포 루프
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- 다리를 걷기 불가능하게 만들기
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("부품 터치됨")
if humanoid and timerActive == false then
print("타이머 시작")
startTimer()
end
end
button.Touched:Connect(buttonPressed)
요약
루프는 다양한 상호작용 수단과 결합되어 재미있는 게임 플레이 순간을 만들어낼 수 있습니다. 이 튜토리얼에서는 카운트다운 역할을 하는 for 루프를 사용하여 타이머가 있는 다리를 만드는 방법을 배웠습니다. 카운트다운 동안, 플레이어는 제한된 시간 안에 다리를 건너야 합니다.