Explosion

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

爆発の BaseParts 内の BlastRadius 内の JointInstances と 2>

エクスペリエンスが実行されている間、データモデルのどこかに Explosion が親化されている場合、それは即座にトリガーされ、数秒間で親化されなくなります。この場合、Class.Instance:Destroy() ではなく、親化されたままの

注:Class.Explosion は、Workspace の子である必要があり、爆発ビジュアルがプレイされ、物理/ダメージ効果が影響を与えるためには、Class.Explosion が必要です。

爆発エフェクト

Humanoids は爆発により殺されます、爆発はキャラクターの Model の頸部の関節を破壊します。 ForceField をモデルに親指して、すべての子供を爆発キルエフェクトから保護します。

Class.BasePart|BaseParts を破壊したくない場合、またはHumanoids をダメージするための自分のフォーミュラを実装したい場合は、DestroyJointRadiusPercent

爆発は、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.BasePart|BaseParts を含む Explosion.BlastRadius の適用された力を決定します。

  • 並列読み取り

    このプロパティは、Explosion のスタッドでの範囲を決定します。この範囲は、爆発のエリアの効果を決定し、爆発のビジュアルのサイズを決定しません。

  • Class.Explosion.BlastRadius の割合を設定し、Explosion の範囲内のすべての関節を破壊する。この範囲の外の任意のものは、Class.Explosion の強度のみを適用します。

  • このプロパティは、ExplosionTerrain とどのようにインタラクトするかを決定します。用于を設定して、爆発が地形にダメージを与えるかどうかを設定します。

  • 非表示
    複製されていません
    並列読み取り
  • 並列読み取り

    このプロパティは、Explosion の中心の位置です。世界スペースに定義され、Explosion 親に影響されません。

  • 並列読み取り

    パーティクルエフェクトの速度を制御する値が 0 から 1 の間です。

  • 並列読み取り

    このプロパティは、Explosion のビジュアルエフェクトが表示されるかどうかを決定します。

イベント

  • Hit(part : BasePart,distance : number):RBXScriptSignal

    Class.Explosion.BlastRadius 内の BasePart に当該すると、Explosion.BlastRadius 内のパーツが含まれて、パーツの距離から 1> Class.Explosion.Position1> までの距離を返します。パーツがヒットされたパーツの距離と、パーツからの距離を返します。

プロパティ

BlastPressure

並列読み取り

Class.BasePart|BaseParts を含む Explosion.BlastRadius の適用された力を決定します。

現在、このレベルの強度は、Explosion.Position からの距離に基づいて変わりません。アンカーBasePartsは、爆発範囲内にある無論の距離を等しく離れます。

爆発によるパーツの加速度は決まります。Explosion.DestroyJointRadiusPercent は、関節の破壊度を決めません。Explosion.BlastRadius の内のすべての関節が破壊されると、Class.Explosion.DestroyJointRadius が破壊されます。2>Class.Explosion.DestroyJointRadius

爆弾圧力は、Terrain に与えられるダメージ量を決定しません。提供される爆弾圧力は、0 より大きいです、および Explosion.ExplosionType は、Explosion.BlastRadius で、作成

BlastPressure を 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の間の任意の値を受け入れます。

この範囲は、爆発の効果エリアを決定し、爆発のビジュアルサイズではありません。爆発のビジュアルエフェクトのサイズは、ブラストラジウス (爆発のビジュアル効果のサイズ) に関わらず同じです (爆発のビジュアル効果のサイズが 0 でも)。

BaseParts 内の爆発により、Explosion.BlastPressure が 0 以上になる場合、Explosion.DestroyJointRadiusPercent は、0> Class.BasePart

BaseParts は、Explosion.BlastRadius 内の範囲内にある場合でも、Class.BasePart|BaseParts として扱われます。

コードサンプル

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 の範囲内のすべての関節を破壊する。この範囲の外の任意のものは、Class.Explosion の強度のみを適用します。

たとえば、Explosion.BlastRadius が 100 に設定され、Explosion が 0.5 に設定されている場合、50 スタッドの範囲内の任意のジョイントは破壊されます。Class.BasePart|

このプロパティは、開発者が ExplosionsHumanoids に設定することで、Explosion の頸部の関節が破壊されないようになります。これは、キャラクターが 1> Class.Explosion1> に

コードサンプル

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 とどのようにインタラクトするかを決定します。これは、枚数であり、3つのオプションの 1 つに設定できます。

  • NoCraters - 爆発による地形へのダメージはありません
  • クレーター - 爆発は地形にクレーターを作成します
  • CratersAndDebris - Redundant、Cratersと同じように動作します

ExplosionType が 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 の中心の位置です。世界スペースに定義され、Explosion 親に影響されません。

BaseParts は、Explosion が爆発の位置の Explosion.BlastRadius 内にある場合、影響を受けます。

爆発の効果は即座です。これは、爆発の位置が設定された後に位置を変更することができるため、2つの異なる領域に影響を与えることはできません。爆発が「起爆」した後、親になる子孫によってWorkspaceに移動すると、再びは行われません。一部の場合、爆発のビジュアルエ

この理由で、開発者が爆発を別の場所に表示するようにしたい場合は、新しい爆発を作成する必要があります。

コードサンプル

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

並列読み取り

パーティクルエフェクトの速度をコントロールする値 0 から 1 の間です。1 では通常速度で実行されますが、0.5 では半速度で実行され、0 では時間を凍結します。

Visible

並列読み取り

このプロパティは、Explosion のビジュアルエフェクトが表示されるかどうかを決定します。

[可視] が偽で設定されている場合、爆発はまだ BasePartsExplosion.BlastRadius に影響しますが、唯一の違いは、それは見えないです。

このプロパティの 1つの使用例は、ParticleEmitter を使用して、デフォルトの Explosion 機能を維持しながら、自分のカスタムエクスプロージョンエフェクトを作成するためです。

コードサンプル

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.Position1> までの距離を返します。パーツがヒットされたパーツの距離と、パーツからの距離を返します。

Class.Explosion の効果は、障害物によって中断されることはありません。これは、BasePart が障害物の後ろに接続されていても、パーツがClass.Explosion によって保護されている場合でも、パーツがヒットされることを意味します。

このイベントは、Explosion.BlastPressure が 0 であるときにも発生します。これは、開発者が爆発の影響を BasePartsTerrain の両方に排除することで爆発のカスタムビーハブをプログラムできることを意味します。

このイベントは、BasePart のヒットごとに発生します。これは、キャラクター Model が複数のパーツで構成されているため、同じプレイヤーキャラクターのヒットで複数回発生する可能性があるためで

パラメータ

part: BasePart

Class.BasePart は Explosion によってヒットされました。

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)