ForceField

Show Deprecated

A ForceField protects a Humanoid from taking damage using the Humanoid:TakeDamage() function, and protects BaseParts from having their joints broken due to an Explosion.

ForceField Creation

ForceFields are created when a character spawns on a SpawnLocation and the SpawnLocation.Duration property is greater than zero.

ForeFields influence the instance they are parented to. When parented to a Model they will protect all of the BaseParts descending from that model. They may be parented to a BasePart, but the part's joints will only be protected if both the part and the part it is connected to also contain ForceField.

Forcefields and Joints

When a ForceField is parented to a character Model the neck joint will be protected and thus the character can not be killed by Explosions. Developers can protect joints from Explosions without the need for a ForceField object by setting Explosion.DestroyJointRadiusPercent to 0.

ForceFields and Damage

ForceFields only protect Humanoids from damage using the Humanoid:TakeDamage() function. Humanoids can still be damaged by setting Humanoid.Health directly. For this reason, it is advised that developers use Humanoid:TakeDamage(). Bearing in mind of course, that it is still possible to check if a ForceField exists before manually setting the humanoid's health as shown below:


1if not characterModel:FindFirstChildOfClass("ForceField") then
2 humanoid.Health = humanoid.Health - 10
3end
4

ForceField Visuals

When ForceField.Visible is set to true, a particle effect is created. A number of rules determine where this effect will be emitted from.

When parented to a Model, if the model includes a Humanoid named “Humanoid” with Humanoid.RigType set to R15, the effect will be emitted from the part named “UpperTorso”. Otherwise, the effect will be emitted from the part named “Torso”. The part must have the same parent as the ForceField, if it does not exist then the effect is emitted at 0, 0, 0.

When parented to a BasePart the effect will be emitted from the part's BasePart.Position.

Code Samples

ForceField Instantiation

1local Players = game:GetService("Players")
2
3local FORCE_FIELD_DURATION = 15
4
5local function giveForcefield(player, duration)
6 local character = player.Character
7 if character then
8 local forceField = Instance.new("ForceField")
9 forceField.Visible = true
10 forceField.Parent = character
11 if duration then
12 task.delay(duration, function()
13 if forceField then
14 forceField:Destroy()
15 end
16 end)
17 end
18 end
19end
20
21local function onPlayerAdded(player)
22 player.CharacterAdded:Connect(function(_character)
23 giveForcefield(player, FORCE_FIELD_DURATION)
24 end)
25end
26
27Players.PlayerAdded(onPlayerAdded)
SpawnLocation ForceField

1local spawnLocation = Instance.new("SpawnLocation")
2spawnLocation.Anchored = true
3spawnLocation.Size = Vector3.new(5, 1, 5)
4spawnLocation.Neutral = true -- anyone can spawn here
5spawnLocation.Duration = 20
6spawnLocation.Parent = workspace

Summary

Properties

Determines whether or not the ForceField's particle effect is visible.

Events

Methods

Properties

Visible

Determines whether or not the ForceField's particle effect is visible.

When is set to true, a particle effect is created, a number of rules determine where this effect will be emitted from.

When parented to a Model, if the model includes a Humanoid named “Humanoiod” with Humanoid.RigType set to R15, the effect will be emitted from the part named “UpperTorso”. Otherwise, the effect will be emitted from the part named “Torso”. The part must have the same parent as the ForceField, if it does not exist then the effect is emitted at 0, 0, 0.

When parented to a BasePart the effect will be emitted from the part's BasePart.Position.

One use for this property is replacing the default particle effect with a custom effect using ParticleEmitters.

Events

Methods