Impara
Classe motore
Explosion

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.


Campioni di codice
Istanziazione di Esplosioni
local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- danneggia il terreno
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

Riferimento API
Proprietà
BlastPressure
Lettura Parallela
Capacità: AvatarBehavior
Explosion.BlastPressure:number
Campioni di codice
Esplosione Personalizzata
local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- questo potrebbe essere impostato più in alto per applicare ancora velocità ai pezzi
explosion.DestroyJointRadiusPercent = 0 -- le articolazioni sono al sicuro
explosion.BlastRadius = radius
explosion.Position = position
-- impostare una tabella per tenere traccia dei modelli colpiti
local modelsHit = {}
-- ascolta i contatti
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- controlla se questo modello è già stato colpito
if modelsHit[parentModel] then
return
end
-- registra questo modello come colpito
modelsHit[parentModel] = true
-- cerca un humanoide
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- ottieni la distanza come valore tra 0 e 1
distanceFactor = 1 - distanceFactor -- ribalta l'importo, in modo che un valore basso == più vicino == più danno
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage per rispettare i ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox rimuove le esplosioni dopo pochi secondi, ma non le distrugge.
-- Per garantire che la nostra connessione .Hit venga disconnessa, distruggi l'esplosione una volta rimossa.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

BlastRadius
Lettura Parallela
Capacità: AvatarBehavior
Explosion.BlastRadius:number
Campioni di codice
Istanziazione di Esplosioni
local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- danneggia il terreno
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

DestroyJointRadiusPercent
Lettura Parallela
Capacità: AvatarBehavior
Explosion.DestroyJointRadiusPercent:number
Campioni di codice
Esplosioni non letali
local function onDescendantAdded(instance)
if instance:IsA("Explosion") then
local explosion = instance
explosion.DestroyJointRadiusPercent = 0
local destroyJointRadiusPercent = 1
explosion.Hit:Connect(function(part, distance)
-- controlla se la parte è nel raggio per rompere le giunture
if distance <= destroyJointRadiusPercent * explosion.BlastRadius then
-- assicurati che la parte non appartenga a un personaggio
if not game.Players:GetPlayerFromCharacter(part.Parent) then
part:BreakJoints()
end
end
end)
end
end
workspace.DescendantAdded:Connect(onDescendantAdded)
Esplosione Personalizzata
local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- questo potrebbe essere impostato più in alto per applicare ancora velocità ai pezzi
explosion.DestroyJointRadiusPercent = 0 -- le articolazioni sono al sicuro
explosion.BlastRadius = radius
explosion.Position = position
-- impostare una tabella per tenere traccia dei modelli colpiti
local modelsHit = {}
-- ascolta i contatti
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- controlla se questo modello è già stato colpito
if modelsHit[parentModel] then
return
end
-- registra questo modello come colpito
modelsHit[parentModel] = true
-- cerca un humanoide
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- ottieni la distanza come valore tra 0 e 1
distanceFactor = 1 - distanceFactor -- ribalta l'importo, in modo che un valore basso == più vicino == più danno
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage per rispettare i ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox rimuove le esplosioni dopo pochi secondi, ma non le distrugge.
-- Per garantire che la nostra connessione .Hit venga disconnessa, distruggi l'esplosione una volta rimossa.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

ExplosionType
Lettura Parallela
Capacità: AvatarBehavior
Explosion.ExplosionType:Enum.ExplosionType
Campioni di codice
Ferma le esplosioni che danneggiano il terreno
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
Nascosto
Non Replicato
Lettura Parallela
Capacità: AvatarBehavior
Explosion.LocalTransparencyModifier:number

Position
Lettura Parallela
Capacità: AvatarBehavior
Explosion.Position:Vector3
Campioni di codice
Istanziazione di Esplosioni
local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- danneggia il terreno
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

TimeScale
Lettura Parallela
Capacità: AvatarBehavior
Explosion.TimeScale:number

Visible
Lettura Parallela
Capacità: AvatarBehavior
Explosion.Visible:boolean
Campioni di codice
Visuali Personalizzati di Esplosione
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))

Eventi
Hit
Capacità: AvatarBehavior
Explosion.Hit(
part:BasePart, distance:number
Parametri
distance:number
Campioni di codice
Esplosione Personalizzata
local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- questo potrebbe essere impostato più in alto per applicare ancora velocità ai pezzi
explosion.DestroyJointRadiusPercent = 0 -- le articolazioni sono al sicuro
explosion.BlastRadius = radius
explosion.Position = position
-- impostare una tabella per tenere traccia dei modelli colpiti
local modelsHit = {}
-- ascolta i contatti
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- controlla se questo modello è già stato colpito
if modelsHit[parentModel] then
return
end
-- registra questo modello come colpito
modelsHit[parentModel] = true
-- cerca un humanoide
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- ottieni la distanza come valore tra 0 e 1
distanceFactor = 1 - distanceFactor -- ribalta l'importo, in modo che un valore basso == più vicino == più danno
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage per rispettare i ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox rimuove le esplosioni dopo pochi secondi, ma non le distrugge.
-- Per garantire che la nostra connessione .Hit venga disconnessa, distruggi l'esplosione una volta rimossa.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.