로블록스에서 간단한 게임 만들기(파트 생기기/사라지기)

728x90

파란 파트에서 초록 파트로 넘어가는 과정에서 빨간 파트를 생기게 하여 딛고 점프할 수 있는 간단한 게임을 만들어보았다. 

SpawnLocation은 파란색 파트 위에 세팅했고 목표 지점인 초록색 파트 사이에 빨간색 파트를 생성했다. 

이 때 빨강 파트의 속성에서 Behavior의 Anchored를 체크해주어야 한다. Anchored는 유니티 엔진으로 따지면 Rigidbody와 유사한 기능이기 때문에 체크가 되지 않으면 실제 플레이 모드에서 사라진다(또는 다른 물리적 작용에 의해 움직이는 등 영향을 받는다) Anchored를 체크해준 이유는 플레이어가 위에 올라섰을 때 바닥으로 떨어지거나 움직이지 않도록 고정시켜주기 위함이다.

탐색기 창에서 빨강 파트 우측에 플러스 버튼을 누르면 다음과 같은 옵션이 생성된다. 로블록스는 기본적으로 Lua언어로 스크립트를 만들어 디테일한 게임 요소들을 조작한다. 해당 옵션의 Script를 생성하고 'Disappear'로 이름을 변경해준다.

 

루아에서 변수는 local variableName = variableValue 형식으로 선언된다.

지역변수를 의미하는 Local은 함수 내부에 선언된 변수로, 함수가 실행되면 만들어지고 함수가 종료되면 소멸하는 변수이다. = 연산자를 통해 변수에 값을 선언해줄 수 있다.

 

생성된 빨강 파트를 Platform이라 명명하고 스크립트 내에 local platform = script.Parent를 작성해준다. platform 변수에 script.Parent라는 값을 선언해 준 것이다. script.Parent는 스크립트가 지정된 오브젝트를 찾는 내용임을 의미한다. 

 

변수 이름을 설정할 때에는 Camel Case를 따르는데, 이는 띄어쓰기 대신에 대문자로 표현하는 것을 의미한다.
(예 : justLikeThis)

 

그 다음으로는 platform을 사라지게 만드는 disappear 함수 블럭을 만들어 준다. 

local function disappear()

end

선언한 function과 end 사이에 코드 내용을 작성해주면 된다.

 

파트 속성(part property)에서 Transparency(투명도) 값을 이용해 파트의 투명도에 변화를 줄 것이다. platform이 사라질 때 파트는 보이지 않아야하고 플레이어가 통과되어야 한다. 만약 platform이 destroy되면 나중에 다시 생성되지 않기 때문이다. Transparency 값은 0~1 사이로 조정할 수 있는데 1로 올릴 경우 invincible해지게 된다.

 

cancollide 속성은 물체의 충돌 여부를 판별해 물리적 작용이 가능하게 하는 기능이다. 체크(True)가 된 경우, 어떤 물체가 다른 물체와 충돌할 경우 부딪혀 튀어 오른 후 떨어지는 듯한 효과를 주는 반면 체크 해제(False)인 경우엔 물체가 충돌 없이 통과되어 떨어지게 된다.

 

platform.CanCollide = false

platform.Transparency = 1

disappear 함수블럭 안에 해당 코드를 입력해 준다. Dot(.)을 통해서 platform의 property에 접근 할 수 있는데 platform의 Cancollide 속성은 false로, Transparency 속성은 1로 선언해준다.

 

end 뒤에 새로운 줄에 disappear()코드를 입력해준다. 함수 뒤에 ()를 입력하면 함수를 호출하는 기능을 수행한다. 플레이해보면 platform이 사라지는데 정상적으로 disappear 함수가 실행된 것을 확인할 수 있다. 정상적으로 실행된 것을 확인했으면 disappear() 코드는 삭제해준다.

 

마찬가지로 다시 생성되게 하기 위해서는 appear() 함수를 선언해주면 된다.

local function appear()

   platform.CanCollide = true

   platform.Transparency = 0

end

 

disappear()과 appear()함수가 일정한 시간 간격을 두고 반복하기 위해서는 While Loop를 사용해주면 된다.

while true do

end

마지막에 다음 코드를 입력해준다다. While Loop에서 Statement 내 True로 remain된 경우 영원히 loop가 실행된다고 이해하면 될 것 같다.

while true do

   wait(3)

   disappear()

   wait(3)

   appear()

end

wait 메서드는 ()에 시간(초)를 입력하여 기다리게 하는 기능을 수행한다. 따라서 위 코드는 3초 후 -> disappear() 실행 -> 3초 후 -> appear() 실행을 의미한다.

다음과 같이 간단한 코드 만으로 미니 게임을 만들어보았다. 징검다리 형태로 여러개의 platform을 배치하고 시간차를 다르게 준다면 훨씬 더 재미있는 게임으로 완성될 것이다.

 

local platform = script.Parent

local function disappear()
	platform.CanCollide = false
	platform.Transparency = 1
end

local function appear()
	platform.CanCollide = true
	platform.Transparency = 0
end

while true do
	wait(3)
	disappear()
	wait(3)
	appear()
end
728x90