Apprendre
Classe de moteur
Explosion

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.


Échantillons de code
Instanciation d'explosion
local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- inflige des dommages au terrain
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

Référence API
Propriétés
BlastPressure
Lecture parallèle
Capacités : AvatarBehavior
Explosion.BlastPressure:number
Échantillons de code
Explosion Personnalisée
local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- ceci pourrait être défini plus haut pour appliquer encore de la vitesse aux pièces
explosion.DestroyJointRadiusPercent = 0 -- les articulations sont sûres
explosion.BlastRadius = radius
explosion.Position = position
-- configurer une table pour suivre les modèles touchés
local modelsHit = {}
-- écouter le contact
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- vérifier si ce modèle a déjà été touché
if modelsHit[parentModel] then
return
end
-- enregistrer ce modèle comme touché
modelsHit[parentModel] = true
-- rechercher un humanoïde
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- obtenir la distance comme une valeur entre 0 et 1
distanceFactor = 1 - distanceFactor -- inverser la valeur, pour que plus bas == plus proche == plus de dégâts
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage pour respecter les ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox supprime les explosions après quelques secondes, mais ne les détruit pas.
-- Pour s'assurer que notre connexion .Hit se déconnecte, détruisez l'explosion une fois qu'elle est supprimée.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

BlastRadius
Lecture parallèle
Capacités : AvatarBehavior
Explosion.BlastRadius:number
Échantillons de code
Instanciation d'explosion
local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- inflige des dommages au terrain
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

DestroyJointRadiusPercent
Lecture parallèle
Capacités : AvatarBehavior
Explosion.DestroyJointRadiusPercent:number
Échantillons de code
Explosions non létales
local function onDescendantAdded(instance)
if instance:IsA("Explosion") then
local explosion = instance
explosion.DestroyJointRadiusPercent = 0
local destroyJointRadiusPercent = 1
explosion.Hit:Connect(function(part, distance)
-- vérifier que la pièce est à portée pour briser les joints
if distance <= destroyJointRadiusPercent * explosion.BlastRadius then
-- s'assurer que la pièce n'appartient pas à un personnage
if not game.Players:GetPlayerFromCharacter(part.Parent) then
part:BreakJoints()
end
end
end)
end
end
workspace.DescendantAdded:Connect(onDescendantAdded)
Explosion Personnalisée
local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- ceci pourrait être défini plus haut pour appliquer encore de la vitesse aux pièces
explosion.DestroyJointRadiusPercent = 0 -- les articulations sont sûres
explosion.BlastRadius = radius
explosion.Position = position
-- configurer une table pour suivre les modèles touchés
local modelsHit = {}
-- écouter le contact
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- vérifier si ce modèle a déjà été touché
if modelsHit[parentModel] then
return
end
-- enregistrer ce modèle comme touché
modelsHit[parentModel] = true
-- rechercher un humanoïde
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- obtenir la distance comme une valeur entre 0 et 1
distanceFactor = 1 - distanceFactor -- inverser la valeur, pour que plus bas == plus proche == plus de dégâts
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage pour respecter les ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox supprime les explosions après quelques secondes, mais ne les détruit pas.
-- Pour s'assurer que notre connexion .Hit se déconnecte, détruisez l'explosion une fois qu'elle est supprimée.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

ExplosionType
Lecture parallèle
Capacités : AvatarBehavior
Explosion.ExplosionType:Enum.ExplosionType
Échantillons de code
Empêcher les explosions d'endommager le 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
Caché
Non répliqué
Lecture parallèle
Capacités : AvatarBehavior
Explosion.LocalTransparencyModifier:number

Position
Lecture parallèle
Capacités : AvatarBehavior
Explosion.Position:Vector3
Échantillons de code
Instanciation d'explosion
local explosion = Instance.new("Explosion")
explosion.BlastRadius = 60
explosion.ExplosionType = Enum.ExplosionType.Craters -- inflige des dommages au terrain
explosion.Position = Vector3.new(0, 10, 0)
explosion.Parent = workspace

TimeScale
Lecture parallèle
Capacités : AvatarBehavior
Explosion.TimeScale:number

Visible
Lecture parallèle
Capacités : AvatarBehavior
Explosion.Visible:boolean
Échantillons de code
Visuels Personnalisés d'Explosion
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))

Événements
Hit
Capacités : AvatarBehavior
Explosion.Hit(
part:BasePart, distance:number
Paramètres
distance:number
Échantillons de code
Explosion Personnalisée
local function customExplosion(position, radius, maxDamage)
local explosion = Instance.new("Explosion")
explosion.BlastPressure = 0 -- ceci pourrait être défini plus haut pour appliquer encore de la vitesse aux pièces
explosion.DestroyJointRadiusPercent = 0 -- les articulations sont sûres
explosion.BlastRadius = radius
explosion.Position = position
-- configurer une table pour suivre les modèles touchés
local modelsHit = {}
-- écouter le contact
explosion.Hit:Connect(function(part, distance)
local parentModel = part.Parent
if parentModel then
-- vérifier si ce modèle a déjà été touché
if modelsHit[parentModel] then
return
end
-- enregistrer ce modèle comme touché
modelsHit[parentModel] = true
-- rechercher un humanoïde
local humanoid = parentModel:FindFirstChild("Humanoid")
if humanoid then
local distanceFactor = distance / explosion.BlastRadius -- obtenir la distance comme une valeur entre 0 et 1
distanceFactor = 1 - distanceFactor -- inverser la valeur, pour que plus bas == plus proche == plus de dégâts
humanoid:TakeDamage(maxDamage * distanceFactor) -- TakeDamage pour respecter les ForceFields
end
end
end)
explosion.Parent = game.Workspace
-- Roblox supprime les explosions après quelques secondes, mais ne les détruit pas.
-- Pour s'assurer que notre connexion .Hit se déconnecte, détruisez l'explosion une fois qu'elle est supprimée.
explosion.AncestryChanged:Connect(function()
if not explosion.Parent then
explosion:Destroy()
end
end)
end
customExplosion(Vector3.new(0, 10, 0), 12, 50)

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.