[함께해요, 로블록스 코딩]
*해당 게시글 내용은 오규환 교수님께서 실제 게임 개발자들이 하는 방식으로 짠 코드입니다. 천천히 따라해보세요. 만약 아래 내용이 어렵다면, 기사를 다운받아 교수님의 코드를 좀 더 쉽게 요약한 내용을 확인해보세요.
로블록스 숨바꼭질 게임
숨바꼭질 게임은 정해진 시간내에 술래는 참여자들을 붙잡으러 다니고 참여자는 술래에게 잡히지 않으려고 숨거나 도망다니면서 진행되는 게임입니다.
이번호에서는 숨바꼭질 게임 진행 정보를 화면에 표시해 주는 인터패이스와 게임 플레이에 많이 사용하는 파워점프 파트, 스피드업 파트를 만들어 봅니다.
게임진행 정보표시 인터패이스 만들기
제작하는 숨바꼭질 게임에서는 아래 3개의 제임진행 정보를 위 그림처럼 화면 상단에 표시합니다.
위치 |
호칭 |
표시 정보 |
화면 위 왼쪽 |
Message |
게임 진행 상태를 메시지로 알려주는 프레임 |
화면 위 가운데 |
Timer |
게임의 남은 시간을 보여주는 타이머 프레임 |
화면 위 오른쪽 |
PlayersLeft |
술래에게 붙잡히지 않고 살아 남은 참여자 수 |
정보표시 인터페이스는 '탐색기→StarterGui' 아래에 만듭니다. '탐색기→StarterGui→'를 눌러 'ScreenGui'를 추가하고 사용 목적에 맞게 이름을 HUD로 변경합니다. HUD는 Head-UP Display의 약자로 게임 정보를 보여주는 사용자 인터패이스를 의미합니다. 다음으로 'HUD→
'를 눌러 'Frame'을 3개 추가하고 이름을 각각 'Messaage', 'Timer', 'PlayersLeft'로 변경합니다. 프레임은 정보를 보여주는 사각형 인터패이스의 크기와 위치를 정의하는 영역입니다. 3개 프레임의 위치, 크기 등의 속성값을 다음과 같이 변경합니다.
|
Message |
Timer |
PlayersLeft |
Anchor Point |
0, 0 |
0.5, 0 |
1, 0 |
Positon |
0, 0, 0, 0 |
0.5, 0, 0, 0 |
1, 0, 0, 0 |
Size |
0.15, 0, 0.1, 0 |
0.15, 0, 0.1, 0 |
0.15, 0, 0.1, 0 |
[프레임 속성 변경 결과] |
Anchor Point, Positionm Size 는 각각 Framed의 기준점, 위치, 크기를 지정하는 속성으로 게임 화면에서 상대적인 위치와 크기를 0(0%) ~ 1(100%) 사이의 값으로 정합니다.,
3개 프레임에 를 눌러 정보를 저장하는 'TextLabel'을 각각 생성하고 이름과 값을 다음 표의 내용과 같이 변경합니다.
|
|
||
Name |
Message |
Timer |
PlayersLeft |
Text |
Message |
1:30 |
0 |
TextScaled 체크박스 |
체크 |
||
[TextLabel 배치 & 값 설정]
[StaterGui 아래 Frame과 TextLabel 배치] |
게임정보 표시의 동작 여부를 확인하기 위해 '탐색기→StarterGui→→LocalScript'를 눌러 'Local Script'를 추가합니다. 표시되는 게임진행 정보는 로븍록스 서버로부터 값을 받아 화면에 보여주도록 코딩하므로 'Local Script'에서 코드를 작성합니다. 아래의 코드를 입력하고 실행하면 Message, Timer, PlayersLeft 프레임에 '초 Serconds', '00:00 형태의 시간', '99'가 각각 표시됩니다.
게임진행 정보표시 테스트 스크립트 |
local HUD = script.Parent local messageFrame = HUD:WaitForChild("Message") local timerFrame = HUD:WaitForChild("Timer") local playersLeftFrame = HUD:WaitForChild("PlayersLeft")
for i = 90, 0, -1 do messageFrame.Message.Text = i.." Seconds" timerFrame.Timer.Text = ("%02i:%02i"):format(i/60%60, i%60) playersLeftFrame.PlayersLeft.Text = "99" wait(1) end |
[테스트 스크립트 실행] |
파워점프, 스피드업 파트 만들기
숨바꼭질 게임에서 술래를 캐릭터가 피해 도망다니면서 높이 점프하거나 빨리 걸을 수 있다면 흥미진진한 게임이 되겠죠 ? 그래서 밟으면 높게 점프할 수 있는 파워점프 파트와 일정 시간동안 빨리 걸을 수 있는 스피드업 파트를 만들어 보겠습니다..
파워점프는 캐릭터의 Humanoid 속성 중 UseJumpPower 값을 True로 하고 JumpPower 값을 기본값 50보다 큰 숫자를 지정하여 만들 수 있습니다. 직사각형 파트를 생성하고 '탐색기→Part 선택→ '를 눌러 'Script'를 추가해서 아래의 코드를 입력합니다.
파워점프 스크립트 |
script.Parent.Touched:Connect(function(hit) local humanoid = hit.Parent:FindFirstChild("Humanoid") if humanoid then humanoid.UseJumpPower = true humanoid.JumpPower = 220 humanoid.Jump = true end end)
script.Parent.TouchEnded:Connect(function(hit) local humanoid = hit.Parent:FindFirstChild("Humanoid") if humanoid then humanoid.UseJumpPower = false humanoid.JumpPower = 50 end end) |
스피드업은 캐릭터의 Humanoid 속성 중 WalkSpeed 값을 기본값인 16보다 큰 값으로 변경하여 구현할 수 있습니다. 직사각형 파트를 생성하고 '탐색기→Part선택→ '를 눌러 'Script'를 추가해서 아래의 코드를 입력합니다.
스피드업 스크립트 |
script.Parent.Touched:Connect(function(hit) local humanoid = hit.Parent:FindFirstChild("Humanoid") if humanoid then humanoid.WalkSpeed = 32 wait(5) humanoid.WalkSpeed = 16 end end) |