버튼은 플레이어가 새로운 지역을 잠금 해제하거나, 포인트를 얻거나, 보물을 드러내는 데 사용할 수 있습니다. 플레이어가 버튼을 만질 때마다, 버튼이 상호작용되고 있음을 알려주기 위해 색상을 변경하거나 소리를 내는 등 피드백을 제공해야 합니다.
이 예제에서 버튼은 다리를 활성화하는 데 사용됩니다. 버튼이 눌리면 초록색으로 변하고, 플레이어는 다리를 사용할 수 있습니다. 플레이어가 버튼을 누르지 않으면, 그들이 다리를 걷으려고 할 때 떨어질 것입니다.
다리 만들기
먼저 다리를 설정합니다.
플레이어가 다리가 필요한 지역을 환경에서 만듭니다.
다리를 위한 파트를 만들고 이름을 다리(Bridge)로 변경합니다.
다리를 선택하고 속성(Properties) 창에서:
- **투명도(Transparency)**를 .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)