Explosion

사용되지 않는 항목 표시

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

폭발 내의 BasePartsBlastRadius 내에 적용된 힘은 파츠 및 킬을 중지

경험이 실행되는 동안 데이터 모델의 어느 곳에서든 Explosion이 부모로 지정되면 즉시 실행이 중단되고 몇 초 내에 부모가 다시 지정됩니다. 이 경우 Class.Instance:Destroy()</

참고 Explosion 은 폭발 시각적 개체를 생성하고 물리적/손상 효과를 미치려면 Workspace 의 하위인 해야 합니다.

폭발 효과

Humanoids 는 폭발로 죽습니다, 폭발은 캐릭터의 Model 목 관절을 부서뜨리기 때문에 폭발 킬 효과를 보호합니다. ForceField 를 모델에 부모로 지정하면 모든 자식을 폭발 킬 효과로부터 보호할

Class.BasePart|BaseParts 을 Humanoids 와 함께 부서뜨리거나 자체 수식을 사용하여 피해를 입히려면 이 값을 0으로 설정하고 Class.Explosion.DestroyJointRadiusPercent|Destroy

폭발은 또한 Terrain에 피해를 입히고 크레이터를 생성하도록 구성할 수 있으며, ExplosionType 속성을 통해 구성됩니다.

폭발의 효과는 장애물로 인해 손상되지 않으므로 다른 부품/지형 뒤에 있는 부품/지형에 영향을 받을 수 있습니다.

코드 샘플

Explosion Instantiation

local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- damages terrain
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

요약

속성

  • 병렬 읽기

    Class.Explosion.BlastRadius에 갇힌 Explosion.BlastRadius 에 적용할 힘의 양을 결정하는 데 사용됩니다.

  • 병렬 읽기

    이 속성은 스터드 단위의 Explosion 의 반경을 결정합니다. 이 반경은 폭발의 영향 영역을 결정하며 폭발의 시각적 개체 크기가 아닙니다.

  • Class.Explosion.BlastRadius 의 비율을 설정하여 모든 연결을 파괴하는 데 사용됩니다. 이 범위 내의 모든 것은 Explosion 힘만 적용됩니다.

  • 이 속성은 Explosion 이 지형과 상호 작용하는 방법을 결정합니다. 폭발이 지형에 피해를 입는지 여부를 설정하는 데 사용됩니다.

  • 숨김
    복제되지 않음
    병렬 읽기
  • 병렬 읽기

    이 속성은 세계 공간의 중심입니다. Explosion의 부모에 의해 영향을 받지 않습니다.

  • 병렬 읽기

    입자 효과 속도를 조정하는 값은 0에서 1 사이입니다.

  • 병렬 읽기

    이 속성은 Explosion의 시각적 효과가 표시되는지 여부를 결정합니다.

이벤트

속성

BlastPressure

병렬 읽기

Class.Explosion.BlastRadius에 갇힌 Explosion.BlastRadius 에 적용할 힘의 양을 결정하는 데 사용됩니다.

현재 이 수준의 힘은 Explosion.Position 에서 적용되는 것이 아닙니다. 고정되지 않은 BaseParts 는 모두 동일하게 폭발 반경 내에서 멀리 가속됩니다.

폭발 압력은 폭발로 인한 부품의 가속을 결정합니다. 공의 부서졌는 정도를 결정하지 않습니다. Explosion.DestroyJointRadiusPercent 가 1일 때 모든 공의 부서졌는 정도가 제공되지 않습니다. 공의 부서졌는 정도가 0일 때 모

폭발 압력은 또한 Terrain 에 제공되는 폭발 압력을 결정하지 않습니다. 제공된 폭발 압력이 0보다 크면 Explosion.ExplosionType 은 크레이터 크기를 결정하는 데

폭발 압력을 0으로 설정하면 폭발의 효과가 제거되고 개발자가 Explosion.Hit 이벤트를 사용하여 사용자 정의 동작을 프로그래밍할 때 유용합니다.

코드 샘플

Custom Explosion

local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- this could be set higher to still apply velocity to parts
explosion.DestroyJointRadiusPercent = 0 -- joints are safe
explosion.BlastRadius = radius
explosion.Position = position
-- set up a table to track the models hit
local modelsHit = {}
-- listen for contact
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- check to see if this model has already been hit
if modelsHit[parentModel] then
return
end
-- log this model as hit
modelsHit[parentModel] = true
-- look for a humanoid
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- get the distance as a value between 0 and 1
distanceFactor = 1 - distanceFactor -- flip the amount, so that lower == closer == more damage
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage to respect ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox removes explosions after a few seconds, but does not destroy them.
-- To ensure our .Hit connection gets disconnected, destroy the explosion once it's removed.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

BlastRadius

병렬 읽기

이 속성은 Explosion 의 반경을 스터드 단위로 결정합니다. 이 속성은 0에서 100 사이의 값을 모두 수락합니다.

이 반경은 폭발의 효과 영역을 결정하며 폭발의 시각적 개체 크기가 아닙니다. 폭발의 시각적 개체 크기는 BlastRadius(이 BlastRadius가 0인 경우에도)가 동일합니다.

BaseParts 내의 폭발에 대해 폭발의 영향을 받습니다. 즉, if Explosion.BlastPressure 가 0보다 크면 부품에

BaseParts 은 범위 내에 있더라도 Explosion.BlastRadius 내에서 고려됩니다.

코드 샘플

Explosion Instantiation

local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- damages terrain
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

DestroyJointRadiusPercent

병렬 읽기

Class.Explosion.BlastRadius 의 비율을 설정하여 모든 연결을 파괴하는 데 사용됩니다. 이 범위 내의 모든 것은 Explosion 힘만 적용됩니다.

예를 들어, Explosion.BlastRadius 가 100로 설정되어 있고 Explosion 가 0.5로 설정되어 있으면 모든 50 스터드 내의 연결이 파괴됩니다. Class.BasePart|BaseParts</

이 속성을 사용하면 개발자가 ExplosionsHumanoids 로 만들 수 있도록 파괴 공간 전도도 백분율을 0으로 설정하면 목 관절이 부서지지 않습니다. 이는 캐릭터가 Explosion

코드 샘플

Non lethal explosions

local function onDescendantAdded(instance)
if instance:IsA("Explosion") then
local explosion = instance
explosion.DestroyJointRadiusPercent = 0
local destroyJointRadiusPercent = 1
explosion.Hit:Connect(function(part, distance)
-- check the part is in range to break joints
if distance <= destroyJointRadiusPercent * explosion.BlastRadius then
-- make sure the part does not belong to a character
if not game.Players:GetPlayerFromCharacter(part.Parent) then
part:BreakJoints()
end
end
end)
end
end
workspace.DescendantAdded:Connect(onDescendantAdded)
Custom Explosion

local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- this could be set higher to still apply velocity to parts
explosion.DestroyJointRadiusPercent = 0 -- joints are safe
explosion.BlastRadius = radius
explosion.Position = position
-- set up a table to track the models hit
local modelsHit = {}
-- listen for contact
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- check to see if this model has already been hit
if modelsHit[parentModel] then
return
end
-- log this model as hit
modelsHit[parentModel] = true
-- look for a humanoid
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- get the distance as a value between 0 and 1
distanceFactor = 1 - distanceFactor -- flip the amount, so that lower == closer == more damage
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage to respect ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox removes explosions after a few seconds, but does not destroy them.
-- To ensure our .Hit connection gets disconnected, destroy the explosion once it's removed.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

ExplosionType

병렬 읽기

이 속성은 ExplosionTerrain 과 어떻게 상호 작용할지 결정합니다. 그것은 열거형 폭발 유형 값이며 세 가지 옵션 중 하나를 설정할 수 있습니다.

  • NoCraters - 폭발로 인한 지형 손상이 없습니다.
  • 화산 - 폭발은 지형에 화산을 생성합니다.
  • 화산과 잔해 - 중복, 화산과 동일하게 동작합니다

폭발 유형이 Terrain 에 설정되면 크레이터의 반경이 Explosion.BlastRadius 와 비슷합니다. 크레이터는 모든 Terrain 재료 외의 물 외부에서 생성됩니다. 크레이터의 크기는 재

코드 샘플

Stop Explosions from Damaging Terrain

local function onDescendantAdded(instance)
if instance:IsA("Explosion") then
instance.ExplosionType = Enum.ExplosionType.NoCraters
instance:GetPropertyChangedSignal("ExplosionType"):Connect(function()
instance.ExplosionType = Enum.ExplosionType.NoCraters
end)
end
end
workspace.DescendantAdded:Connect(onDescendantAdded)

LocalTransparencyModifier

숨김
복제되지 않음
병렬 읽기

Position

병렬 읽기

이 속성은 세계 공간의 중심입니다. Explosion의 부모에 의해 영향을 받지 않습니다.

BaseParts 이 경우 폭발의 위치 내에 있는 Explosion 이 영향을 받습니다.

폭발의 효과는 즉각적입니다. 즉, 폭발 위치가 설정된 후에도 두 개의 다른 영역에 영향을 미칠 수 있지만 이 효과는 다시 설정되지 않습니다. 폭발이 일어난 후 즉시 부모가 된 후손에게 부모가 될 수 있지만 이 효과는 �

이 이유로 개발자가 폭발을 다른 위치에 표시하려면 새로운 폭발을 생성해야 합니다.

코드 샘플

Explosion Instantiation

local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- damages terrain
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

TimeScale

병렬 읽기

입자 효과 속도를 제어하는 값입니다. 1에서 정상 속도로 실행되고, 0.5에서 절반 속도로 실행되고, 0에서 얼어붙습니다.

Visible

병렬 읽기

이 속성은 Explosion의 시각적 효과가 표시되는지 여부를 결정합니다.

Visible 이 false로 설정되면 폭발은 여전히 BasePartsExplosion.BlastRadius 에 영향을 미칩니다. 유일한 차이점은 보이지 않습니다.

이 속성의 하나의 사용은 개발자가 기본 Class.Explosion 기능을 유지하면서 ParticleEmitter를 사용하여 자신만의 사용자 정의 폭발 효과를 만드는 것입니다.

코드 샘플

Explosion Custom Visuals

local function customExplosion(position)
local explosion = Instance.new("Explosion")
explosion.Position = position
explosion.Visible = false
local attachment = Instance.new("Attachment")
attachment.Position = position
attachment.Parent = workspace.Terrain
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Enabled = false
particleEmitter.Parent = attachment
particleEmitter.Speed = NumberRange.new(5, 30)
particleEmitter.SpreadAngle = Vector2.new(-90, 90)
explosion.Parent = workspace
particleEmitter:Emit(20)
task.delay(5, function()
if attachment then
attachment:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0))

메서드

이벤트

Hit

Class.Explosion.BlastRadius 내의 BasePart 에 적중하면 Explosion.BlastRadius 가 발생합니다. 1>Class.Explosion.Fire1> 와 함께 부품이 부품의 거리를 반환합니다.

Class.Explosion 의 효과는 장애물로 인해 손상되지 않지만, 다른 부품이 손상되더라도 여전히 부품이 다른 부품 뒤에 있는 경우 여전히 손상됩니다. BasePart 이 손상되더라도 안착된 경우 여전히 효과가 적용됩니다.

이 이벤트는 또한 Explosion.BlastPressure 가 0인 경우에도 발생합니다. 즉, 개발자는 폭발에 대한 폭발의 영향을 제거하여 폭발에 대한 사용자 지정 동작을 프로그래밍할 수 있습니다. 이는 Class.BasePart|BaseParts 및 1>Class.Terr

이 이벤트는 모든 BasePart 히트에 대해 발생합니다. 즉, 동일한 플레이어 캐릭터(캐릭터 Model 이 여러 부분으로 구성되어 있음)에 대해 여러 번 발생할

매개 변수

part: BasePart

Class.Explosion 에 의해 타격 된 Class.BasePart .

distance: number

Class.Explosion.Position에서의 히트의 거리.


코드 샘플

Custom Explosion

local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- this could be set higher to still apply velocity to parts
explosion.DestroyJointRadiusPercent = 0 -- joints are safe
explosion.BlastRadius = radius
explosion.Position = position
-- set up a table to track the models hit
local modelsHit = {}
-- listen for contact
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- check to see if this model has already been hit
if modelsHit[parentModel] then
return
end
-- log this model as hit
modelsHit[parentModel] = true
-- look for a humanoid
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- get the distance as a value between 0 and 1
distanceFactor = 1 - distanceFactor -- flip the amount, so that lower == closer == more damage
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage to respect ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox removes explosions after a few seconds, but does not destroy them.
-- To ensure our .Hit connection gets disconnected, destroy the explosion once it's removed.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)