스크립팅 소개에서 경험의 변화를 시간에 따라 반복적으로 만드는 방법을 배웠습니다. 사용자 행동에 따라 변화를 주고 싶다면 어떻게 해야 할까요? 본 자습서에서는 사용자가 접촉할 때 사망하는 치명적인 용암 바닥을 만드는 방법을 배웁니다.
설정
치명적인 용암을 두기 위해 여러분의 세계에 위치가 필요합니다. 스크립팅 소개 과정을 따라 했다면, 용암 바닥은 사라지는 플랫폼으로 덮인 간격에 잘 맞을 것입니다.
Part를 삽입하고 여러분의 세계에 제자리에 이동시킵니다. 이름을 LavaFloor로 지정합니다.
울타리의 바닥을 덮을 수 있도록 크기를 조정합니다.

Material 속성을 Neon으로 설정하고 Color를 주황색으로 설정하여 바닥이 용암처럼 보이도록 만듭니다.


LavaFloor 부분에 스크립트를 삽입하고 이름을 Kill로 변경합니다.

기본 코드를 제거하고 용암을 위한 변수를 생성합니다.
local lava = script.Parent
이벤트에 연결
사용자가 용암에 접촉할 때를 감지하기 위해 이벤트를 사용합니다. 모든 부분에는 뭔가가 그것에 접촉할 때 발생하는 Touched 이벤트가 있습니다. 이 이벤트에 연결하여 발생할 때 함수를 실행할 수 있습니다.
kill이라는 새로운 함수를 선언합니다.
점을 사용하여 용암 객체의 Touched 이벤트에 접근합니다: lava.Touched.
Touched 이벤트에서 Connect 함수를 호출하여 부분이 접촉할 때 호출할 함수로 kill()을 전달합니다.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
이제 kill 함수 내에서 작성한 모든 코드는 무언가가 용암에 접촉할 때마다 실행됩니다. 여기서 Connect 함수에 대해 콜론이 사용되며, 점이 아님을 유의하세요 - 이 점에서는 왜 그런지 걱정하지 말고, 그 차이점을 기억하세요.
접촉하는 부분 얻기
사용자를 죽이기 위해서는 함수에 그 사용자와 연결된 객체가 필요합니다. 부분의 Touched 이벤트는 그것에 접촉한 "다른 부분"을 제공할 수 있습니다 — 그러나 함수의 매개변수로 요청해야만 가능합니다.
매개변수는 함수가 호출될 때 예상하는 수신 정의입니다. 매개변수는 다른 변수처럼 함수 내에서 사용할 수 있습니다. 함수를 호출할 때 괄호 내에 포함하여 매개변수에 정보를 전달할 수 있습니다. 매개변수는 함수의 첫 번째 줄 괄호에서 정의됩니다. kill 함수에 otherPart라는 매개변수를 생성합니다.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
kill 함수가 호출되면 otherPart 매개변수는 용암 바닥에 접촉한 부분을 나타내며, 함수에서 작성할 코드는 이를 사용할 수 있습니다.
캐릭터와 휴머노이드
사용자가 용암에 접촉하면, Roblox는 용암에 접촉한 사용자의 특정 신체 부위를 감지할 수 있습니다. 예를 들어, 왼쪽 다리 또는 오른쪽 발 등이 될 수 있습니다. 이 부분은 사용자의 Character 모델에 있으며, 이는 경험 내에서 사용자의 아바타를 구성하는 모든 객체를 포함합니다:
- 사용자의 개별 신체 부위, 예를 들어 머리, 팔다리, 몸통.
- 사용자가 착용하는 의류 및 액세서리.
- 사용자의 건강과 관련된 많은 속성을 포함하는 특별한 객체인 Humanoid.
- 사용자의 움직임을 제어하는 HumanoidRootPart.
이전에 언급했듯이 용암에 접촉하는 신체 부위는 Character 모델의 일부이므로 otherPart.Parent를 사용하여 해당 캐릭터에 대한 참조를 얻을 수 있습니다. 용암 바닥에 접촉한 부분의 부모를 저장할 변수를 생성합니다.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
캐릭터 모델에서 사용자를 죽이기 위해 Humanoid 객체를 가져와야 합니다. 이를 위해 FindFirstChild() 함수를 사용할 수 있습니다 — 찾고 있는 것의 이름을 전달하기만 하면 해당 객체에서 찾은 첫 번째 일치하는 자식을 제공합니다. partParent 변수에서 "Humanoid"를 찾도록 FindFirstChild()를 호출하고, 결과를 humanoid라는 새로운 변수에 저장합니다.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
휴머노이드 확인
휴머노이드가 발견되었는지 쉽게 확인할 수 있는 if 문을 사용합니다. if 문 내의 코드는 첫 번째 줄에 정의된 조건이 참일 때만 실행됩니다.
보다 복잡한 조건을 구성하는 데 사용할 수 있는 다양한 연산자가 있으며, 이를 향후 과정에서 접할 수 있습니다 - 지금은 humanoid 변수를 여기에 넣어 두세요. humanoid를 조건으로 하는 if 문을 생성합니다.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)
캐릭터 건강 설정
이제 Humanoid가 확인되었으므로 그 속성을 변경할 수 있습니다. Health 속성을 0으로 설정하면 연결된 캐릭터가 사망합니다. if 문 본문에서 humanoid의 Health 속성을 0으로 설정합니다.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)
이제 용암 바닥이 완성되었습니다! 경험을 테스트하면 치명적인 용암이 사용자를 성공적으로 죽인다는 것을 알 수 있습니다. 여러분의 용암을 오비의 추가 도전으로 사용하거나 세계의 경계를 설정해 보세요.
최종 코드
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)