기사와 게시글을 읽고 폴짝폴짝 점프맵을 만들어보세요. 어렵거나 이해가 안 가는 부분은 댓글로 질문을 남겨주시면 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) |