Roblox용 마법 VFX
Roblox용 무료 마법 이펙트: 소환진, 보호막, 블랙홀, 순간이동, 치유 비, 구속 룬, 비전 미사일 플립북과 준비 동작, 사거리 확인, 재사용 대기시간이 포함된 주문 시전용 Luau 코드.
Roblox 게임의 마법은 보통 짧은 순서로 진행됩니다. 시전자의 준비 동작, 주문 자체, 주문이 착지한 위치의 표시입니다. 각 단계는 플립북 하나로 표현하므로 주문 하나를 파티클 두세 개와 Luau 몇 줄로 만들 수 있습니다. 대부분의 마법은 빛만 사용합니다. 아래 8개 이펙트 중 6개는 LightEmission 1로 내보내며, 뒤에 있는 요소와 빛을 합성합니다.
시작하기 좋은 주문
- 진과 영역: 의식이나 생성 지점에는 소환진을, 치유 영역에는 치유 비를 사용합니다.
- 방어: 아이기스 보호막은 보호막이 유지되는 동안 반복 재생되는 구체입니다. 오라처럼 캐릭터에 용접합니다.
- 이동: 순간이동에는 블링크를 사용합니다. 플레이어가 떠나는 위치와 도착하는 위치에서 각각 재생합니다.
- 제어: 속박이나 기절에는 룬 속박, 빙결에는 시간 정지, 끌어당기기에는 블랙홀 소용돌이를 사용합니다.
- 미사일: 비전 미사일은 왼쪽에서 오른쪽으로 휘어 날아가므로 측면에서 가장 잘 보입니다. 3D 유도 미사일을 만들려면 Trail이 달린 작은 발광 Part를 움직이고 착지 지점에서 타격 이펙트를 재생합니다.
서버에서 주문 시전하기
시전은 세 부분으로 이루어집니다. 다른 플레이어가 대응할 수 있도록 짧게 준비하고, 주문을 발동한 뒤, 재사용 대기시간을 적용합니다. 세 단계 모두 서버가 관리하므로 각자 클라이언트 설정을 바꿔도 더 빨리 시전할 수 없습니다. 이 예제는 순간이동입니다. 블링크를 시전자가 떠나는 위치와 도착하는 위치에서 재생합니다.
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Debris = game:GetService("Debris")
local castBlink = ReplicatedStorage:WaitForChild("CastBlink") -- a RemoteEvent the client fires
local blink = ReplicatedStorage.Effects:WaitForChild("Blink")
local COOLDOWN, RANGE = 4, 30
local lastCast = {}
local function playAt(template: BasePart, cf: CFrame)
local fx = template:Clone()
fx:PivotTo(cf)
fx.Parent = workspace
Debris:AddItem(fx, 3)
end
castBlink.OnServerEvent:Connect(function(player, target)
local character = player.Character
local root = character and character:FindFirstChild("HumanoidRootPart")
if not root or typeof(target) ~= "Vector3" then return end
if os.clock() - (lastCast[player] or 0) < COOLDOWN then return end
lastCast[player] = os.clock()
-- Never trust the client's target: keep it within range.
local offset = target - root.Position
if offset.Magnitude ~= offset.Magnitude then return end -- a NaN from a tampered client
if offset.Magnitude > RANGE then target = root.Position + offset.Unit * RANGE end
playAt(blink, root.CFrame)
task.wait(0.25) -- the wind-up
character:PivotTo(CFrame.new(target + Vector3.new(0, 3, 0)) * root.CFrame.Rotation)
playAt(blink, CFrame.new(target))
end)
Players.PlayerRemoving:Connect(function(player)
lastCast[player] = nil
end)클라이언트에서 플레이어가 조준한 위치와 함께 CastBlink를 실행합니다. 예를 들면 player:GetMouse().Hit.Position입니다. 다른 플레이어를 맞히는 주문은 번개 강타와 같은 방식으로 처리합니다. 서버가 범위 안에 있는 플레이어를 확인합니다.
마법 설정
- 바닥의 원형 이펙트: ParticleEmitter는 카메라를 향하므로 위에서 내려다보며 그린 원은 표지판처럼 세워집니다. 원을 바닥에 눕히려면 얇고 투명한 Part의 윗면에 있는 SurfaceGui의 ImageLabel에서 재생합니다. UI 이펙트 스크립트로 프레임을 순서대로 표시합니다. 치유 비와 룬 속박은 이미 비스듬히 고리를 그리므로 세워서 사용해도 됩니다.
- 발광: 빛을 사용하는 주문은 어두운 맵에서 가장 잘 보입니다. 블랙홀 소용돌이와 시간 정지는 어두운 부분이 있으므로 LightEmission 0으로 내보냅니다.
- 속성별 색상: 스튜디오에서 각 원소나 클래스에 맞게 주문 색을 바꾸거나, Roblox에서 이미터의 Color로 색을 입힙니다. Color는 텍스처에 곱해지므로 흰색이나 밝은 색 이펙트가 가장 잘 물듭니다.
- 크기: 시전자에게 붙는 이펙트는 5 to 7 studs, 영역 이펙트는 영향을 미치는 범위의 너비에 맞춥니다.
플립북 PNG는 무료입니다. 각 이펙트 페이지의 ROBLOX 버튼은 계정 없이 사용할 수 있고, 무료 계정으로 스튜디오에서 원하는 그리드와 텍스처 크기를 선택해 내보낼 수도 있습니다(하루 3개 이펙트). 이미터가 설정되어 있고 재생 스크립트가 포함된 .rbxmx 준비 모델과 UI용 UIFlipbook.luau는 월 $7.99부터 모든 플랜에서 제공됩니다.
게임에 적용하기
모든 설정과 두 가지 적용 방법, 무료 PNG 또는 바로 사용할 수 있는 모델은 Roblox 설정 페이지에 있습니다. 장르별 추천 이펙트는 무료 Roblox VFX에서 확인할 수 있습니다. 내보내기 전에 스튜디오에서 원하는 대로 이펙트를 바꿀 수 있습니다. 마법 속성마다 고유한 색을 지정해 보세요.
자주 묻는 질문
Roblox에서 주문진을 바닥에 눕히려면 어떻게 하나요?
ParticleEmitter는 카메라를 향하므로 평평한 원도 세워집니다. 얇고 투명한 Part의 윗면에 있는 SurfaceGui의 ImageLabel에 플립북을 표시한 다음 ImageRectOffset으로 프레임을 순서대로 표시합니다.
주문은 서버와 클라이언트 중 어디에서 실행해야 하나요?
시전 여부는 서버가 결정하게 하세요. 서버가 재사용 대기시간, 사거리, 피격 대상을 관리해야 합니다. 서버에서 직접 이펙트를 배치하거나 모든 클라이언트에 재생을 요청할 수 있습니다. 클라이언트가 피해량이나 재사용 대기시간을 결정하도록 해서는 안 됩니다.
원소별로 주문 색을 바꿀 수 있나요?
네. 내보내기 전에 스튜디오에서 이펙트 색을 바꾸거나, Roblox에서 이미터의 Color 속성으로 색을 입힐 수 있습니다. Color는 텍스처에 곱해집니다.
Robux를 버는 게임에서 이 이펙트를 사용할 수 있나요?
네. 라이브러리에서 시작한 이펙트를 포함해 내보낸 이펙트는 상업용 게임을 포함한 모든 프로젝트에서 출처 표시 없이 사용할 수 있습니다. 라이브러리 자체를 이펙트 팩으로 재판매하는 것은 허용되지 않습니다.







