ForceField

사용되지 않는 항목 표시

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

A 포스필드Humanoid 를 통해 입힌 피해를 방지하고 Humanoid:TakeDamage() 방법으로 인해 분리되는 것을 방지하며 BasePartsExplosion 때문에 분리되는 것을 방지합니다.캐릭터가 포스필드 에 생성될 때 새로운 SpawnLocation이 0보다 크면 새로운 SpawnLocation.Duration 필드가 생성됩니다.

손상 및 관절

A 포스필드 는 부모인 인스턴스에 영향을 미칩니다.부모로 지정되면 Model 모델에서 내려오는 모든 BaseParts 가 보호됩니다.부모가 BasePart 에 있는 경우, 부품의 조인은 부품과 연결된 부품이 모두 포스필드 를 포함하는 경우에만 보호됩니다.

포스필드 는 메서드에 의해 입힌 피해로부터만 보호합니다.인간형은 여전히 Humanoid.Health으로 직접 손상을 입을 수 있습니다.이러한 이유로 포스필드 보호를 고려하면서 피해를 할당하기 위해 Humanoid:TakeDamage()를 사용하는 것이 좋습니다.

시각화

ForceField.Visible가 진실로 설정되면 입자 효과가 생성됩니다. 여러 규칙이 이 효과가 발산될 위치를 결정합니다.

  • 부모로 지정된 경우 에 모델이 포함된 경우, 모델에 라는 이름의 휴머노이드 가 R15로 설정되어 있으면, 효과는 상의 몸통 이라는 부분에서 방출됩니다.그렇지 않으면, 효과는 몸통 이라는 부품에서 방출됩니다.
  • 부모로 지정되면 BasePart 효과가 부품의 BasePart.Position 에서 방출됩니다.

코드 샘플

This code sample includes a function that will give a Player a ForceField for a specific duration.

ForceField Instantiation

local Players = game:GetService("Players")
local FORCE_FIELD_DURATION = 15
local function giveForcefield(player, duration)
local character = player.Character
if character then
local forceField = Instance.new("ForceField")
forceField.Visible = true
forceField.Parent = character
if duration then
task.delay(duration, function()
if forceField then
forceField:Destroy()
end
end)
end
end
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(_character)
giveForcefield(player, FORCE_FIELD_DURATION)
end)
end
Players.PlayerAdded(onPlayerAdded)

속성

Visible

병렬 읽기

ForceField 입자 효과가 표시되는지 여부를 결정합니다.이를 false로 설정하면 다음 코드 샘플에서 보여준 것처럼 기본 입자 효과를 사용자 지정 효과로 교체할 수 있습니다.

코드 샘플

This sample includes a function that will replace the default ForceField particle effect with an effect using ParticleEmitters that can be modified by the developer.

Custom ForceField Effect

local Players = game:GetService("Players")
local FORCE_FIELD_DURATION = 15
local function createCustomForcefield(player, duration)
local character = player.Character
if character then
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
-- find the torso
local torsoName = humanoid.RigType == Enum.HumanoidRigType.R15 and "UpperTorso" or "Torso"
local torso = character:FindFirstChild(torsoName)
if torso then
-- create a forcefield
local forceField = Instance.new("ForceField")
forceField.Visible = false -- not visible
-- create a particle effect
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Enabled = true
particleEmitter.Parent = torso
-- listen for the forcefield being removed
forceField.AncestryChanged:Connect(function(_child, parent)
if not parent then
if particleEmitter and particleEmitter.Parent then
particleEmitter:Destroy()
end
end
end)
-- parent the forcefield and set it to expire
forceField.Parent = character
if duration then
task.delay(duration, function()
if forceField then
forceField:Destroy()
end
end)
end
end
end
end
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(_character)
createCustomForcefield(player, FORCE_FIELD_DURATION)
end)
end
Players.PlayerAdded(onPlayerAdded)

메서드

이벤트