====== Effekseer (effect) ====== This is used to play effects in VCI.\\ For the details of how to use the component, refer to [[en:vci:component:sdk:effekseer| Effekseer (for VCI)]]. ===== List of functions ===== **For the latest list of the methods, refer to "types.lua" file in "EmbeddedScriptWorkspace" folder. ** ^ Function ^ Description ^ | EffectName | Acquire the effect name as a string. | | Play() | Loop play the effect until it is stopped. | | PlayOneShot() | Play the effect once. | | Stop() | Stop the effect. It disappears gradually. | | StopImmediate() | Stop the effect.\\ The effect disappears instantaneously. | | StopRoot() | | | SetAllColor(color: Color) | Change the color of the effect. | | SetTargetLocation(targetLocation: Vector3) | Specify the target location of the effect. | | SetPause (paused: bool) | Pause the effect at the specified timing. | | SetShow (shown: bool) | Switch between show/hide of the effect. | | SetSpeed (speed: number) | Change the speed of the effect.\\ The base speed is 1 and the speed can be specified with its multiple. | | SetLoop (isLoop: bool) | The effect will loop when set to true.\\ The default is the value set in Effekseer Emitter. | The methods with ''_ALL_'' are synchronized and run on other clients as well.\\ If you want the result to be the same in all clients, use methods with ''_ALL_'' prefix. ^ Method ^ Description ^ | _ALL_Play () | Loop play the effect until it is stopped. | | _ALL_PlayOneShot () | Play the effect once. | | _ALL_Stop () | Stop the effect. It disappears gradually. | | _ALL_StopImmediate () | Stop the effect.\\ The effect disappears instantaneously. | | _ALL_StopRoot () | | | _ALL_SetAllColor (color: Color) | Change the color of the effect. | | _ALL_SetTargetLocation (targetLocation: Vector3) | Specify the target location of the effect. | | _ALL_SetPause (paused: bool) | Pause the effect at the specified timing. | | _ALL_SetShow (shown: bool) | Switch between show/hide of the effect. | | _ALL_SetSpeed (speed: number) | Change the speed of the effect.\\ The base speed is 1 and the speed can be specified with its multiple. | | _ALL_SetLoop (isLoop: bool) | The effect will loop when set to true.\\ The default is the value set in Effekseer Emitter. | ===== The basic how to use ===== - Attach an EffekseerEmitter component on a SubItem. - Execute ''vci.assets.GetEffekseerEmitter("SubItem")'' or\\ ''vci.assets.GetEffekseerEmitters("SubItem")'' to store the effect from SubItem into a variable. For the argument, specify the name of the target gemeobject with string.\\ - Execute functions against the variable storing the effect to play, store and execute other actions. ** *For the details on the component and how to set it up**, refer to [[en:vci:component:sdk:effekseer|Effekseer (for VCI)]]. Example\\ -- Specify the name of the GameObject with the effect attached to store the effect. -- Store the effect attached to the GameObject named "Effect" in a variable "effect" local effect = vci.assets.GetEffekseerEmitter("Effect") -- Print the effect name print(effect.EffectName) function onUse() -- Play the stored effect once effect.PlayOneShot() end The result\\ (The effect is played once when the subitem is used) ===== EffectName ===== **Return value: string** * Acquire the file name of the effect assigned to the EffectAsset of the EffekseerEmitter. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItem") -- Print the name of the effect to play print("Play the effect: ".._Effect.EffectName) -- Start playing the effect _Effect._ALL_Play() The result\\ Play the effect: Effect (The effect stored in _Effect starts to play) ===== Play() ===== **Argument: none** * Start playing the effect * If the effect is set to loop, it will continue to play until Stop() is called. * If the loop is not set, the effect will stop playing when the duration of the effect has ended. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItem") function onUse() -- Start playing the effect when used _Effect._ALL_Play() print("Start playing the effect: ".._Effect.EffectName) end function onUnuse() -- Stop playing the effect when unused _Effect._ALL_Stop() print("Stop playing the effect: ".._Effect.EffectName) end The result\\ (The effect starts to play when used) (The effect stops playing when unused) ===== PlayOneShot() ===== **Argument: none** * Play the effect once even when the effect is set to loop. * Executing this while the effect is playing will stop the currently playing effect and start over. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItemLoop") function onUse() -- Play the effect once _Effect._ALL_PlayOneShot() end The result\\ (The effect is played once) ===== Stop() ===== **Argument: none** * Stop the effect being played with Play(). -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItem") function onUse() -- Start playing the effect when used _Effect._ALL_Play() print("Start playing the effect: ".._Effect.EffectName) end function onUnuse() -- Stop playing the effect when unused _Effect._ALL_Stop() print("Stop playing the effect: ".._Effect.EffectName) end The result\\ (The effect starts to play when used) (The effect stops playing when unused) ===== StopImmediate() ===== **Argument: none** * tips1 * tips2 The result\\ ===== StopRoot() ===== **Argument: none** * tips1 * tips2 The result\\ ===== SetAllColor() ===== **1st argument: color (color)** * When using SetAllColor(), use white for the texture color. * Specify the color with [[en:vci:script:reference:color|Color]] type. * The color returns to the original color when the effect stops playing. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItem") -- Start playing the effect _Effect._ALL_Play() function onUse() -- Create a random color local color = Color.__new(math.random(0,100) * 0.01, math.random(0,100) * 0.01, math.random(0,100) * 0.01, 1) _Effect.SetAllColor(color) end The result\\ (The color of the effect changes randomly when used) -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItem") -- Start playing the effect _Effect._ALL_Play() function onUse() -- Change the color of the effect to blue _Effect.SetAllColor(Color.blue) end function onUnuse() -- Change the color of the effect to red _Effect.SetAllColor(Color.red) end The result\\ (The color of the effect changes to blue when used) (The color of the effect changes to red when unused) ===== SetTargetLocation() ===== **1st argument: targetLocation (Vector3)** * tips1 * tips2 The result\\ ===== SetPause() ===== **1st argument: paused (bool)** * true to pause the effect, false to resume the effect. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItemLoop") -- Start playing the effect _Effect._ALL_Play() function onUse() -- Pause the effect _Effect._ALL_SetPause(true) end function onUnuse() -- Resume the effect _Effect._ALL_SetPause(false) end The result\\ (Spawn the item to play the effect) (The effect pauses when used) (The effect resumes when unused) ===== SetShow() ===== **1st argument: shown (bool)** * True will show the effect, false will hide the effect. * When the effect ended with the false state, re-playing the effect will turn state back to the show state. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItemLoop") -- Start playing the effect _Effect._ALL_Play() function onUse() -- Hide the effect _Effect._ALL_SetShow(false) end function onUnuse() -- Show the effect _Effect._ALL_SetShow(true) end The result\\ (Spawn the item to play the effect) (When used, the effect will be hidden) (When unused, the effect will be shown) ===== SetSpeed () ===== **1st argument: Speed(number)** * Change the play speed of the effect. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItem") function onUse() -- Assign a random value between 1.0 and 3.0 into the speed local speed = 0.1 * math.random(10, 30) -- Change the play speed of the effect _Effect._ALL_SetSpeed(speed) -- Play the effect only once _Effect.PlayOneShot() end The result\\ (When used, play the effect once with a random speed between 1x and 3x) ===== SetLoop () ===== **1st argument: isLoop (bool)** * true will set the effect to play in a loop, false will disable the loop play. -- Store the effect attached to the GameObject local _Effect = vci.assets.GetEffekseerEmitter("EffectItem") function onGrab() -- Set the effect to play in loop _Effect._ALL_SetLoop(true) -- Start playing the effect _Effect._ALL_Play() end function onUse() -- Disable the loop play of the effect _Effect._ALL_SetLoop(false) -- Start playing the effect _Effect._ALL_Play() end The result\\ (Grab will start the loop play of the effect) (Use will play the effect only one and ends)