본문바로가기
수학체험활동
로블록스로 재밌는 게임 만드는 법을 배워보아요!
[함께해요, 로블록스 코딩] [함께해요. 로블록스 코딩] 폴짝폴짝 점프맵 만들기 3탄
수학동아 2022.03.25 21:02 조회 265

기사와 게시글을 읽고 폴짝폴짝 점프맵을 만들어보세요. 어렵거나 이해가 안 가는 부분은 댓글로 질문을 남겨주시면 4월 29일 온라인 클래스에서 답변해 드립니다! 댓글로 질문 혹은 자신의 맵 링크를 남겨주세요!

----------------------------------------------------------------------------------------------------------------------------------------------------------

지난 시간에는 투명도, 재질, 색과 같은 파트의 속성을 스크립트 코딩으로 변경해 보았는데요. 이번에는 플레이어 캐릭터가 파트와 닿았을 때 파트가 점차 사라지거나 캐릭터가 죽는 스크립트 코딩을 작성해 봅시다.

 

 

‘플레이어 캐릭터가 닿았을 때 점점 투명해지는 파트 만들기’

 

 

플레이어 캐릭터와 닿았을 때 점점 투명해지다가 2초 후 사라지는 파트를 만들어 볼께요. 이것을 만들기 위해서는 먼저 플레이어 캐릭터가 어떻게 구성되었는지를 알아야 합니다. 게임 실행 후, 워크스패이스 창에서 플레이어 캐릭터를 클릭해 보면 캐릭터는 1개의 특징이 있다는 것을 알 수 있어요

 

 

1. 캐릭터는 ‘휴머노이트(Humanoid)’라는 개체를 가진다.

 

2. 신체 부위는 16개의 파트들로 합처쳐서 만들어져 있다.

 

 

플레이어 캐릭터가 어떤 파트와 닿았다는 것은 캐릭터를 구성하는 16개 파트 중 하나가 닿았다는 것을 말합니다.

 

 

 

로블록스 스튜디오의 맨 윗줄의 맨 왼쪽의 ‘베이스플레이트(Baseplate)’ 템플릿을 클릭하여 새 프로젝트를 생성 후 직사각형 블록 파트를 1개 만듭니다. 이름(Name), 크기(Size), 위치(Position), 앵커설정(Anchored)을 다음과 같이 정합니다.

 

 

파트 속성

이름(Name)

FadePart

크기(Size),

6, 1, 12

위치(Position)

20, 1, 0

앵커설정(Anchored)

체크

 

 

파트 위치의 Y 값을 1로 하여 베이스플래이트와 충돌을 피하였고 앵커를 설정하여 위치를 고정하였습니다. 다음으로 탐색기→FadePart 선택 →  ’를 눌러 ‘Script’를 추가 후 아래의 코드를 입력합니다.

 

 

닿았을 때 점점 투명해지는 파트 스크립트 코딩

 local part = script.Parent

 

 function fadePart()

       for i = 1, 10 do

            part.Transparency = i/10

            wait(0.2)

       end

       part:Destroy()

 end

 

 part.Touched:Connect(fadePart)

 

 

캐릭터가 파트와 닿으면 “Touched”라는 이벤트가 발생합니다. part.Touched:Connect(fadePart) 는 Touched 이벤트가 발생하였을 때 ‘fadePart‘라는 이름의 함수를 연결하는 코드입니다. ‘fadePart‘는 함수 이름으로 호출되면 function ~ end 안의 코드를 실행합니다. ‘fadePart‘는 0.2초마다 파트 투명도를 0.1씩 감소하여 2초 후에는 완전히 투명하게 바꾸고 파트를 없앱니다.

 

 

‘플레이어 캐릭터가 닿았을 때 캐릭터가 죽는 파트 만들기’

 

 

로븍록스에서는 플레이어 캐릭터가 파트와 닿았을 때 플레이어 캐릭터가 죽는 파트를 만들어 볼께요. 스크립트 코드는 다음의 두 단계 과정으로 구현됩니다.

 

 

수행 내용

코드 설명

1단계

닿은 개체가 캐릭터에 해당되는지 확인한다.

닿은 파트의 부모가 ‘휴머노이트(Humanoid)’ 개체를 포함하고 있는지 확인한다.

2단계2

만약 그렇다면 캐릭터의 체력을 0으로 한다.

Humanoid 개체 속성인 Health 값을 0으로 한다.

 

 

 

 

1단계예서는 닿은 파트의 부모가 캐릭터인지을 확인합니다. 앞 부분에서 살표보았듯이 플레이어 캐릭터는 ‘휴머노이트(Humanoid)’ 개체를 포함하고 있어 이 개체의 유/무를 통해 캐릭터인지를 판단합니다.

 

캐릭터인지를 확인하였다면 캐릭터의 체력 값을 저장하는 ‘Humanoid’ 개체 속성인 ‘Helath’ 값을 0으로 합니다.

 

직사각형 파트와 그 아래에 스크립트를 추가 후 다음의 코드을 적습니다. 게임을 실행한 다음 캐릭터가 파트에 닿으면 Health가 0이 되면서 죽을겁니다. 코드에서 FindFirstChild("Humanoid") 함수로 현재 개체가 ‘Humanoid’ 개쳬를 자식 개체로 가지고 있는지를 판별합니다.

 

캐릭터가 파트와 닿으면 “Touched”라는 이벤트가 발생합니다. part.Touched:Connect(fadePart) 는 Touched 이벤트가 발생하였을 때 ‘fadePart‘라는 이름의 함수를 연결하는 코드입니다. ‘fadePart‘는 함수 이름으로 호출되면 function ~ end 안의 코드를 실행합니다. ‘fadePart‘는 0.2초마다 파트 투명도를 0.1씩 감소하여 2초 후에는 완전히 투명하게 바꾸고 파트를 없앱니다.

 

 

닿았을 때 캐릭터가 죽는 파트 스크립트 코딩

 local part = script.Parent

 

 function killPart(touchedPart)

       partParent = touchedPart.Parent

       if partParent:FindFirstChild("Humanoid") then

             partParent.Humanoid.Health = 0

       end

 end

 

 part.Touched:Connect(killPart)

  • 폴리매스 문제는 과학기술진흥기금 및 복권기금의 재원으로 운영되고, 과학기술정보통신부와 한국과학창의재단의 지원을 받아 수행된 성과물로 우리나라의 과학기술 발전과 사회적 가치 증진에 기여하고 있습니다.

  • ☎문의 02-6749-3911