Skip to content

Vfx

Vfx is a specialized type of SmartObject for visual effects. It inherits everything from SmartObject.

Functions

Function Name Return Type Description Tags
Play([table optionalParameters]) None Starts playing the effect. The optionalParameters table may be provided containing:
includeDescendants (boolean): If true, also plays any Vfx descendants of this instance.
None
Stop([table optionalParameters]) None Stops playing the effect. The optionalParameters table may be provided containing:
includeDescendants (boolean): If true, also stops any Vfx descendants of this instance.
None

Examples

Example using:

Play

In this example, a script is placed as a child of a Visual Effect object (for example Spark Explosion VFX). The Play() function is called periodically, with a random delay between 2 and 4 seconds. VFXs work best when they are under a client context.

local VFX = script.parent

local MIN_DELAY = 2
local MAX_DELAY = 4

while true do
    local delay = math.random(MIN_DELAY, MAX_DELAY)
    Task.Wait(delay)

    VFX:Play()
end

See also: Vfx.Stop | CoreObject.parent | Task.Wait


Example using:

Stop

In this example, a script detects when players enter and exit a trigger. If there are any players in the trigger, a looping visual effect is played (for example the Fire Volume VFX). Once all players have left the trigger the VFX stops playing. The Stop() function is also called in the very beginning in case the VFX comes with "Auto Play" enabled and we are assuming no players begin inside the trigger.

local VFX = script.parent
local TRIGGER = script:GetCustomProperty("Trigger"):WaitForObject()

VFX:Stop()

local playerCount = 0

function OnBeginOverlap(trigger, other)
    if other:IsA("Player") then
        playerCount = playerCount + 1

        if playerCount == 1 then
            VFX:Play()
        end
    end
end

function OnEndOverlap(trigger, other)
    if other:IsA("Player") then
        playerCount = playerCount - 1

        if playerCount == 0 then
            VFX:Stop()
        end
    end
end

TRIGGER.beginOverlapEvent:Connect(OnBeginOverlap)
TRIGGER.endOverlapEvent:Connect(OnEndOverlap)

See also: Vfx.Play | CoreObject.parent | CoreObjectReference.WaitForObject | other.IsA | Trigger.beginOverlapEvent | Event.Connect


Tutorials

Visual Effects in Core


Last update: January 27, 2022