사라지는 함정

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

In 치명적인 용암에서 사용자 행동에 따라 코드를 트리거하는 방법을 배웠습니다.이 자습서에서는 사용자가 플랫폼에 발을 디딜 때 사라지는 플랫폼을 만드는 방법을 보여줍니다.

설정

치명적인 용암을 따랐다면, 사용자가 건너뛰지 못하는 용암 층 위에 사라지는 플랫폼을 배치할 수 있습니다.

  1. 부품을 삽입하고 세계에서 그것을 위치에 이동하십시오. 이름을 FadingPlatform 입력하십시오.

  2. 사용자가 점프할 수 있도록 크기를 조정합니다.

  3. Make sure it's 고정되었습니다 .

  4. 부품에 스크립트 를 삽입하고, 이름을 페이드 온 터치 로 변경하고, 기본 코드를 제거합니다.

  5. 플랫폼에 대한 변수와 플랫폼의 Touched 이벤트에 연결된 빈 함수를 만듭니다.


    local platform = script.Parent
    local function fade()
    end
    platform.Touched:Connect(fade)

플랫폼 페이드

플랫폼이 순간적으로 사라지면 사용자가 간격을 넘어가기 불가능하다고 생각하여 전혀 재미가 없을 것입니다.대신, 플랫폼은 사용자가 그것을 통해 떨어지기 전에 사라져야 합니다. 그렇게 하면 점프할 기회를 줄 수 있습니다.

Transparency 속성을 변경하고 매우 짧은 시간 동안 반복해서 이 효과를 얻을 수 있지만, 점진적 페이드는 0과 1 사이에서 최소 10개의 변경이 필요합니다.매우 반복적인 코드 20개 줄입니다.

이는 특정 수의 코드를 반복하는 for 루프를 사용하여 훨씬 더 효과적으로 달성할 수 있습니다.코드의 각 루프는 반복 으로 알려져 있습니다.루프 A는 쉼표로 구분된 세 가지로 정의됩니다:

  • 제어 변수 - 루프를 계산하기 위해 생성되고 사용된 변수. 이 예제에서는 count이며 시작 값은 1입니다.
  • 종료 값 - 루프가 중지하기 위해 얻어야 하는 값. 이 예제에서는 10입니다.
  • 단계 증가 (선택사항) - 각 루프에 컨트롤 변수에 추가할 내용을 결정합니다.생략하면 기본값이 1로 설정되므로 이 예제에서는 불필요합니다.

에서 터치 시 페이드 :

  1. 함수에서 for 반복하는 시작 루프를 만들어 1 에서 시작하는 루프를 만듭니다.In the function, create a loop starting from which iterates 10 times.

  2. for 루프 내에서 Transparency 속성을 10로 나눈 컨트롤 변수에 설정합니다.

  3. task.wait() 함수를 시간으로 호출하십시오 0.1.


    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    end
    platform.Touched:Connect(fade)

루프가 실행되면 각 반복마다 카운트가 1씩 증가합니다.즉, 플랫폼의 Transparency가 0.1초마다 0.1씩 증가하여 1초 후 전체 투명도에 도달합니다.

재출현

플랫폼이 사라진 후에는 사용자가 그것을 통해 떨어져야 합니다.플랫폼은 사라진 후 몇 초 동안 돌아와야 합니다. 그렇지 않으면 사용자가 실패하면 결코 다시 점프를 시도하지 않을 것입니다.CanCollide 속성은 사용자가 부품을 통과할 수 있는지 여부를 제어합니다.

  1. 플랫폼의 CanCollide 루프 후에 false 합니다.

  2. task.wait() 함수를 사용하여 몇 초 동안 기다립니다.

  3. CanCollide 속성을 true로 다시 설정합니다.

  4. Transparency 속성을 0로 다시 설정합니다.


    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    platform.CanCollide = false
    task.wait(3)
    platform.CanCollide = true
    platform.Transparency = 0
    end
    platform.Touched:Connect(fade)

디바운스 변수

In 치명적인 용암 , you learned that the Touched 이벤트는 사용자의 신체 부분이 부품과 접촉할 때마다 실행됩니다.이 동작은 사용자가 사라지는 플랫폼을 통해 실행할 때 문제를 일으킵니다: 함수는 여러 번 실행되며, 매번 루프를 재설정합니다.

코드가 제대로 작동하려면 사용자가 플랫폼을 처음 만질 때 함수를 한 번만 실행해야 합니다.다른 경우 여러 번 트리거되는 동작이 한 번만 트리거되도록 보장하는 것을 디바운스 라고 합니다.

함수를 디바운스하려면 부울 변수를 사용하여 플랫폼이 이미 터치된 시기를 추적할 수 있습니다.부울은 truefalse 값만 포함할 수 있습니다.변수 을 만들고 그것을 로 설정합니다.


local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)

변수 확인

if 문을 사용하여 디바운스 변수가 false인 경우에만 페이드 함수에서 코드를 실행할 수 있습니다.isTouched페이드 함수의 본문을 조건 if 으로 감싼 not isTouched 문으로 감싼다.


local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)

Luau not 연산자는 그 뒤에 오는 값을 거꾸로 합니다.약관용어로, 이는 첫 번째 if 문이 팔로우문과 동일하게 동작한다는 것을 의미합니다.


if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
end

디바운스 전환

현재 fade 함수의 코드는 항상 실행되는데, isTouched 가 거짓이고 not isTouched 가 참으로 평가되기 때문입니다.디바운스 루틴을 완료하려면 변수의 값을 두 곳에서 전환해야 합니다.

  1. 플랫폼이 사라지기 시작하기 전에 isTouched문 내에서 true플랫폼이 사라지기 시작하기 전에 if문 내에서 설정 플랫폼이 사라지기 시작하기 전에 문 내에서 설정
  2. 플랫폼이 다시 나타난 후 false에 설정을 되돌립니다.

local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)

그리고 끝입니다! 지금 코드를 테스트하고, 사용자가 플랫폼에 점프하고 몇 초 후에 돌아올 때 플랫폼이 사라지는 것을 발견해야 합니다.

이 플랫폼을 더 넓은 간격으로 복제하여 도전적인 장애물을 만들고 그들이 사라지는 속도를 변경하여 난이도를 균형 잡을 수 있습니다.

최종 코드


local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)