Roblox向け魔法VFX

Roblox向けの無料魔法エフェクト。召喚陣、シールド、ブラックホール、テレポート、回復の雨、拘束ルーン、秘術ミサイルをフリップブックで収録。さらに、詠唱前動作、射程チェック、クールダウンを備えた呪文のLuauコードも用意しています。

更新日

Robloxゲームの魔法は、通常、短い連続動作で構成されます。術者の詠唱前動作、呪文本体、着弾地点の印です。それぞれのステップが1つのフリップブックなので、呪文全体を2、3個のパーティクルと数行のLuauで作れます。魔法のほとんどは光だけで表現できます。以下の8種類のエフェクトのうち6種類はLightEmission 1でエクスポートされ、背後にあるものと合成されます。

まず試したい呪文

  • 魔法陣とゾーン: 召喚やスポーン地点にはSummoning Circle、範囲回復にはHealing Rainを使えます。
  • 防御: Aegis Shieldはシールドが続く間ループするバブルです。オーラのようにキャラクターに溶接してください。
  • 移動: テレポートにはBlinkを使います。プレイヤーが出発する場所と到着する場所で再生してください。
  • 行動阻害: Rune Bindは移動不能やスタンに、Time Stopは凍結に、Black Hole Vortexは引き寄せに使えます。
  • ミサイル: Arcane Missilesはボルトが左から右へカーブするため、横から見ると最も分かりやすくなります。3Dの追尾ミサイルには、小さく光るパーツをTrailと一緒に動かし、着弾地点でヒットエフェクトを再生します。

サーバー側で呪文を詠唱する

詠唱は3つの要素で構成されます。短い詠唱前動作(ほかのプレイヤーが反応できるようにするため)、呪文本体、クールダウンです。この3つはすべてサーバー側で管理するため、プレイヤーが自分のクライアントを変更しても、詠唱速度を上げることはできません。この例はテレポートです。Blinkを術者の出発地点と到着地点で再生します。

サーバーScript
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はカメラの方を向くため、真上から描かれた円は看板のように立って見えます。平らに表示するには、薄い透明なパーツの上面にあるSurfaceGuiのImageLabelで再生し、UIエフェクトのスクリプトと同じようにフレームを進めます。Healing RainとRune Bindはリングがすでに斜めに描かれているため、立てた状態でも使えます。
  • 発光: 光を使った呪文は暗いマップで最も映えます。Black Hole VortexとTime Stopには暗い部分があるため、LightEmission 0でエクスポートされます。
  • 魔法系統ごとの色: スタジオで呪文の色を元素やクラスごとに変えるか、RobloxでエミッターのColorを使って色を付けます。Colorはテクスチャに乗算されるため、白や淡い色のエフェクトが最もきれいに色付きます。
  • サイズ: 術者に付けるエフェクトは5から7 studs、ゾーンは効果範囲と同じ幅にします。

フリップブックPNGは無料です。各エフェクトページのROBLOXボタンはアカウント不要で使えます。また、無料アカウントでもスタジオから、グリッドとテクスチャサイズを選んで書き出せます(1日3エフェクト)。エミッターを設定済みで再生用Scriptが付いた.rbxmxの準備済みモデルと、UI用のUIFlipbook.luauは、月額$7.99からのすべてのプランに含まれます。

ゲームに取り込む

すべての設定と、無料PNGまたはすぐに使えるモデルの2通りの導入方法は、Roblox設定ページをご覧ください。ジャンル別のおすすめは無料のRoblox VFXにあります。エクスポート前なら、どのエフェクトもスタジオで変更できます。魔法系統ごとに色を変えてみましょう。

よくある質問

Robloxで魔法陣を地面に平らに置くには?

ParticleEmitterはカメラの方を向くため、平らな円は立って見えます。薄い透明なパーツの上面にあるSurfaceGuiのImageLabelでフリップブックを表示し、ImageRectOffsetでフレームを進めてください。

呪文はサーバー側とクライアント側のどちらで実行すべきですか?

クールダウン、射程、命中対象など、詠唱の判断はサーバーに任せてください。サーバーがエフェクトを配置するか、各クライアントに再生を指示できます。ダメージやクールダウンをクライアントに判断させないでください。

元素ごとに呪文の色を変えられますか?

はい。エクスポート前にスタジオでエフェクトの色を変えるか、RobloxでエミッターのColorプロパティを使って色を付けられます。Colorはテクスチャに乗算されます。

Robuxを獲得できるゲームで、これらのエフェクトを使えますか?

はい。ライブラリから開始したものを含め、書き出したエフェクトはクレジット表記なしで、商用ゲームを含むあらゆるプロジェクトに使用できます。ただし、ライブラリ自体をエフェクトパックとして再販売することは禁止されています。

Roblox VFXガイド