1. はじめに
誰もが一度は憧れる「レベルアップと進化」のシステム。
今回は、ただ数字が増えるだけじゃない!
- 経験値バーが伸びる!
- レベルで姿が変わる!
- 攻撃力もスピードもアップする!
そんなワクワクする神機能の作り方を詳しく解説するぞ。
2. 準備するもの
まずは、進化させたいモデル(Level3Formなど)を ServerStorage の中に入れておこう。 名前を間違えると魔法が動かないから注意してね!
3. ステップ1:レベルメーターを作る(ScreenGui)
まずは画面に表示されるゲージの動きだ。StarterGui の中の LocalScript にこのコードを貼ろう。
💻 メーター更新のコード
local player = game.Players.LocalPlayer
local stats = player:WaitForChild("leaderstats", 10)
if not stats then print("leaderstatsが見つかりません!") return end
local exp = stats:WaitForChild("EXP")
local level = stats:WaitForChild("Level")
local screenGui = script.Parent
local bg = screenGui:WaitForChild("ExpBarBackground")
local bar = bg:WaitForChild("ExpBarInner")
local label = screenGui:WaitForChild("LevelLabel")
local function updateGui()
label.Text = "Level: " .. level.Value
-- ゲージを滑らかに伸ばす (100で満タン)
local percent = math.clamp(exp.Value / 100, 0, 1)
bar:TweenSize(UDim2.new(percent, 0, 1, 0), "Out", "Quad", 0.3, true)
end
exp.Changed:Connect(updateGui)
level.Changed:Connect(updateGui)
updateGui()
ポイント: TweenSize を使うことで、バーがアニメーションのように滑らかに動くよ!
4. ステップ2:敵を倒して経験値をゲット!(KillScript)
次は敵に付けるセンサーだ。敵の Humanoid の中に入れよう。
💻 敵を倒すコード
local humanoid = script.Parent
local enemyModel = humanoid:FindFirstAncestorOfClass("Model")
local canDamage = true
for _, part in pairs(enemyModel:GetChildren()) do
if part:IsA("BasePart") then
part.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
-- プレイヤーが触れた時だけダメージ!
if humanoid.Health > 0 and player and canDamage then
canDamage = false
local atkValue = player:FindFirstChild("AttackPower")
local damage = atkValue and atkValue.Value or 10
humanoid:TakeDamage(damage)
-- HPが0になったら経験値をあげる
if humanoid.Health <= 0 then
local stats = player:FindFirstChild("leaderstats")
if stats then
stats.EXP.Value += 50
if stats.EXP.Value >= 100 then
stats.EXP.Value = 0
stats.Level.Value += 1
end
end
task.wait(0.2)
enemyModel:Destroy() -- 敵をお掃除!
end
task.wait(1) -- 次の攻撃まで1秒待つ(無敵時間)
canDamage = true
end
end)
end
end
5. ステップ3:究極進化の魔法(LevelSystem)
最後は、レベルに合わせて姿と強さを変える心臓部。 ServerScriptService に入れよう。
💻 進化の管理コード
local ServerStorage = game:GetService(“ServerStorage”)
— レベルごとの設定(ここを書き換えるだけで自由にカスタマイズできる!)
local LEVEL_SETTINGS = {
[2] = {model = nil, atk = 20, speed = 16},
[3] = {model = “Level3Form”, atk = 50, speed = 25},
[4] = {model = “Level4Form”, atk = 100, speed = 35},
}
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new(“Folder”, player)
leaderstats.Name = “leaderstats”
local level = Instance.new("IntValue", leaderstats); level.Name = "Level"; level.Value = 1
local exp = Instance.new("IntValue", leaderstats); exp.Name = "EXP"; exp.Value = 0
local atk = Instance.new("NumberValue", player); atk.Name = "AttackPower"; atk.Value = 10
level.Changed:Connect(function(newLevel)
local config = LEVEL_SETTINGS[newLevel]
if not config then return end
-- ステータスアップ!
atk.Value = config.atk
local char = player.Character
if char then char:WaitForChild("Humanoid").WalkSpeed = config.speed end
-- 姿を変身!
if config.model then
local original = ServerStorage:FindFirstChild(config.model)
if original and char and char.PrimaryPart then
local spawnPos = char.PrimaryPart.CFrame
local newChar = original:Clone()
newChar.Name = player.Name
player.Character = newChar
newChar.Parent = workspace
newChar:SetPrimaryPartCFrame(spawnPos)
char:Destroy()
end
end
end)
6. おわりに
これで、君のゲームにも「進化」という最強のシステムが導入されたぞ! 自分だけのオリジナル進化先を作って、友達を驚かせてみよう!
もし分からないことがあったら、YouTubeチャンネル [@Pasonko] のコメント欄で質問してね。 また次の記事で会おう!バイバーイ!

コメント