버튼은 플레이어가 새로운 지역을 잠금 해제하고, 점수를 주고, 보물을 드러내는 데 사용할 수 있습니다. 플레이어가 버튼을 터치할 때마다 색상을 변경하거나 소리를 내는 등의 피드백을 제공하여 상호작용하고 있음을 알려야 합니다.
이 예제에서는 버튼을 사용하여 다리를 활성화합니다. 버튼이 눌리면 초록색으로 변하고 플레이어는 다리를 사용할 수 있게 됩니다. 플레이어가 버튼을 누르지 않으면 다리를 걷으려고 할 때 떨어지게 됩니다.
다리 만들기
먼저 다리를 설정합니다.
플레이어가 다리가 필요한 환경의 영역을 만듭니다.
다리를 위한 파트를 만들고 이름을 'Bridge'로 변경합니다.
다리를 선택하고 속성 창에서:
- **투명도(Transparency)**를 0.5로 변경합니다. 투명도에서 0은 보이고, 1은 보이지 않습니다.
- **고정(Anchor)**를 체크합니다.
- **충돌 가능(CanCollide)**을 체크 해제합니다.
게임을 플레이 테스트할 때, 다리는 안개가 낀 것처럼 보이고 사람들은 아직 그 위를 걸을 수 없어야 합니다.

버튼 만들기
이제 다리가 설정되었으니 버튼을 만듭니다.
'Button'이라는 이름의 새 파트를 만듭니다.
버튼 색상을 빨간색으로 변경합니다.
버튼을 **고정(Anchor)**합니다.
버튼을 약간 떠 있도록 이동시켜서 아무것도 닿지 않도록 합니다. 이는 Touched 이벤트가 우연히 발생하지 않도록 하기 위함입니다.

버튼을 상호작용 가능하게 만들기
이번에는 Touched 이벤트를 사용하여 함정을 만드는 대신, 다리를 사용할 수 있게 만드는 버튼을 만듭니다. 다리를 충돌 가능하게 만들기 위해, 플레이어가 버튼을 터치할 때 실행되는 사용자 정의 함수 내에서 bridge.CanCollide = true 코드를 사용합니다. 나머지 필요한 모든 것을 알고 있으니 다음 단계를 완료해 보세요.
코드 솔루션을 보기 전에 스스로 해결해 보세요.
- 버튼에 'ActivateBridge'라는 이름의 새 스크립트를 삽입합니다.
- Hello World를 삭제합니다.
- 다리와 버튼에 대한 변수를 만듭니다.
- 버튼이 터치될 때 다음을 수행하는 로컬 함수를 만듭니다:
- "button touched"를 출력합니다.
- 터치될 때 버튼의 색상을 빨간색에서 초록색으로 변경합니다.
- 다리의 투명도를 0으로 변경하여 보이게 합니다.
- bridge.CanCollide = true 코드를 사용하여 다리를 사용할 수 있게 만듭니다.
- 함수를 버튼의 Touched 이벤트에 연결합니다.
- 스크립트를 테스트하고 버튼이 터치될 때 다리가 나타나는지 확인합니다.
코드 솔루션 아래는 가능한 코드 솔루션 중 하나입니다.
-- 이 스크립트를 버튼에 삽입합니다.
-- 버튼이 터치될 때 버튼을 초록색으로 변경합니다.
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("button touched")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)코드 문제 해결
문제: 게임이 시작할 때 다리가 이미 단단합니다. 부품들이 고정되어 있고 아무것도 닿지 않는지 확인하세요. 부품이 지형이나 다른 부품과 닿아 있을 수 있으며, 이로 인해 buttonPressed() 함수가 우연히 실행될 수 있습니다.
문제: 출력 창에 "Bridge is not a valid member of Workspace"라는 오류가 발생합니다. 다음 사항을 확인하세요:
- 다리의 이름. 스크립트의 다리는 탐색기에서와 정확히 같은 이름이어야 합니다.
- part.Touched:Connect(buttonPressed)가 buttonPressed() 함수 외부에 있는지 확인합니다.
선택적 코드 도전
이 수업의 스크립트는 특정 지역에서 플레이어를 차단하는 문을 유지하는 데에도 사용할 수 있습니다. 코딩 기술을 연습하고 다음을 수행하세요:
- 문 파트를 만듭니다.
- 문에서 멀리 떨어진 곳에 버튼을 만듭니다.
- 이 수업의 스크립트를 변경하여 문이 투명도를 변경하고 플레이어가 충돌할 수 없도록 만듭니다.
당신의 버전은 다음과 비슷할 수 있습니다:
local button = script.Parent
-- 참고: 파트의 이름을 프로젝트의 것과 일치하도록 Gate로 교체하세요.
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- 플레이어에게 피드백을 주기 위해 버튼을 빨간색으로 변경합니다.
button.BrickColor = BrickColor.Red() -- 이 부분을 변경하세요.
-- 문을 보이지 않게 만듭니다.
gate.Transparency = 1
-- 플레이어가 문을 통과할 수 있도록 만듭니다.
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)