본문 바로가기

게임개발/Roblox

[게임개발] Roblox - 루아(Rua)모르는 사람이 만드는 우당탕탕 로블록스 게임만들기 #7

 

이전 포스팅에서는 연산자에 대해 알아보았다.

오늘은 그보다는 조오금 더 어려운 반복문에 대해 이해해 볼 것이다.

물론, 당연히 루아문법이다.

 

이미지 출처 - 최고심

 

1. 반복문 - for

 

반복문은, 이름에서 볼 수 있듯 반복되는 일을 간단하게 처리해주는 문법이다.

아래있는 코드를 보면 이해가 더 쉬울 것이다.

 

local a = 1
local a = a +1
local a = a +1
local a = a +1
local a = a +1
local a = a +1
local a = a +1
local a = a +1
local a = a +1
local a = a +1
local a = a +1

print(a)

 

이 코드는 a에 1을 10번 반복해서 더하는 코드다. 반복문이 없다면 끔찍하게도 이와같이 여러번 타이핑을 해가며 숫자를 더해야 했겠지만 다행히 우리에게는 반복문이 있다. 

위에 있는 코드는 아래와 같이 반복문을 사용하여 간단하게 표현할 수 있다.

 

for count = 0, 10 ,1 do
	print(count)
    wait(1) //1초를 기다릴 때 사용하는 함수이다
end

 

반복문 'for'의 사용방법은 다음과 같다.

 

for 변수 = 초깃값, 최종값, 증감값, do
end

 

이렇게 보기만 해선 이해하기 힘들다. 직접 코드에 적용해보도록 하자.

 

네모네모빔

 

'ColorPart'라는 이름으로 블록 파트를 추가해준다.

그리고  블록 파트에 +를 눌러 스크립트를 추가해준다.

 

이름을 야무지게 설정해주자. 이름 안정하면 나중에 매우 헷갈린다.

 

그리고 컬러파트 아래에 스크립트 이름을 'ColorChange'로 바꾸어준다.

해당 스크립트에는 다음과 같은 코드를 적어준다.

local colorBlock = game.Workspace.ColorPart //블럭 변수에 게임에 존재하는 컬러파트를 담아준다.

local red = Color3.fromRGB(255,0,0) // 지역변수 Red에 빨간색을 담는다.
local green = Color3.fromRGB(0,255,0) // 지역변수 green에 녹색을 담는다.
local blue = Color3.fromRGB(0,0,255) // 지역변수 blue에 파란색을 담는다.
 
for count = 0, 10 , 1 do		//for문을 시작한다. 위에 있는 문법 참고!
    colorBlock.Color = red 		//컬러 블럭의 색을 red변수와 같게 바꾼다.
    wait(1)						//1초 쉬기
    colorBlock.Color = green	//컬러 블럭의 색을 green변수와 같게 바꾼다.
    wait(1)						//1초 쉬기
    colorBlock.Color = blue		//컬러 블럭의 색을 blue변수와 같게 바꾼다.
    wait(1)						//1초 쉬기
end								//끗!

 

 

1초마다 색이 변하는 블록을 얻게된다. 정말로 멋지다.

 

이렇게 색을 변하게 했던 것처럼, 우리는 이전 포스팅에서 배웠던 효과를 변하게 할 수도 있다.

위에 있는 구조와 굉장히 비슷하니 천천히 따라해보자.

 

이번에는 ColorPart에 불 효과를 추가한다.

 

2022.03.30 - [게임개발/Roblox] - [게임개발] Roblox - 루아(Rua)모르는 사람이 만드는 우당탕탕 로블록스 게임만들기 #4

 

 

모르는 사람은 위 포스팅을 참고!

ColorPart에 두번째 스크립트를 추가하고 이름을 FireChange로 주자.

 

local fire = game.Workspace.ColorPart.Fire // fire변수에 불 효과 담기

for count = 0, 11 , 1 do
	fire.Size = 30 //사이즈를 30으로 조정
    fire.Heat = 25 //불의 히트를 25로 변경
    wait(2) //2초 대기
    fire.Size = 5 // 불의 크기를 5로 변경
    fire.Heat = 5 // 불의 히트를 5로 변경
    wait(2)
end

 

 

 

이제 코드와 효과를 다 추가했다면, 플레이를 눌러보자!

 

대충 이렇게 크기가 엄청 커졌다 줄어들었다를 반복한다.

 

쨔쨘, 이제 크기가 바뀌는 멋진 효과를 완성했다.

이런 식으로 기존에 있던 효과를 자신의 마음대로 커스터마이징이 가능하니 루아 청소년들은 열심히 루아를 다루면서 익숙해지도록 하자.

반복문에는 for문만 존재하는 것이 아니다. While문 또한 존재한다. 그러니 이번에는 While문을 사용해보자.

 

1. 반복문 - while

 

 while문은, for문과는 다르게 특정 조건을 만족할 때까지 무한으로 돌아가는 반복문이다.

 

while 조건 do
	반복할 내용
end

 

의 꼴로 구성되어 있다.

와일문은 반복할 내용을 계속 반복하면서, 조건이 만족되었는지를 확인하고 만족되지 않았다면 다시 안에 있는 내용을 반복한다.

 

이번에는 'WhileTest' 라는 이름의 블록을 생성하고, 그 아래에  'WhileScript"라는 이름의 스크립트를 생성하자.

 

local count = 0 
 
while count < 10 do
	print(count)
	count =count + 1
end

print("while문이 끝났습니다!")

 

스크립트에 해당 내용을 적어준 뒤, 실행한다.

 

 

두구두구두구

 

이렇게 조건을 달성하고 와일문이 끝나며 '끝났습니다!'가 출력되었음을 볼 수 있다.

 

이번엔 While문을 이용하여 시간을 설정해보자. 

 

조명의 기본 TimeOfDay 는 오후 2시로 설정되어있다.

 

 

조명 (Lightning) 의 속성에는 현재시간 'TimeOfDay"가 있다.

이 시간을 보면 ,오후 두시로 설정 되어 있음을 볼 수 있다.

 

이  시간을, 게임을 시작하면 낮이 되었다, 밤이 되었다 바뀌게 해보자.

 

폴더는, 워크플레이스의 +를 눌러 추가하면된다.

 

폴더를 추가하고 그 아래에 DayScript 스크립트를 추가한다.

이 때 폴더는 스크립트가 많아졌을 때, 관리를 용이하게 하기 위해서 만든 것으로 필수는 아니다.

 

DayScript에 다음과 같은 코드를 추가한다.

 

local timeControl = game.Lightning //타임컨트롤 변수에 조명 속성을 담는다.
local timeVal = 12 //tmeVal변수에 12값 저장

while true do //무한반복 ( 아마테라스!)
timeControl.ClockTime = timeVal //조명 속성의 현재 시간의 값을 timeVal 값으로 입력
print(timeVal) //timeVal 값 출력하기
wait(2) //2초 쉬기
timeVal = timeVal + 1 //1을 더해서 다시 저장하기

if timeVal == 25 then //if문. timeVal 의 값이 25라면 아래를 실행한다.
	timeVal = 0 //timeVal에 0을 저장한다.
    end // if문을 탈출한다.
end

 

시간이 지남에 따라 시간이 바뀐다.

 

쨔쟌. 이렇게 하면 어느정도 반복문에 대한 이해가 됐을 것이라 생각한다.

문제가 있다면 댓글로...달아주시면 답변을 드릴테니 편하게 주시길!

다음 포스팅에서는 조건문 - if로 찾아뵙겠당