仕様変更
攻撃時のタグの付け外しで最後にタグをつけた(敵を倒した)プレイヤーだけに報酬を与える仕組みを採用
コインの収集も廃止で倒したらNPCに設定された金額を獲得する仕組みに変更
- 「タグ」がついていたら外す
- 「タグ」をつける
- ダメージを与える
- NPCを倒したらコインを獲得
武器ScriptのTouched関数まわりの修正
function UnTagCreator(humanoid) for i, Creator_Tag in pairs(humanoid:GetChildren()) do if Creator_Tag:IsA("ObjectValue") and Creator_Tag.Name == "creator" then Creator_Tag:Destroy() end end end function TagCreator(humanoid, player) local Creator_Tag = Instance.new("ObjectValue") Creator_Tag.Name = "creator" Creator_Tag.Value = player Creator_Tag.Parent = humanoid end Sword.Touched:Connect(function(hit) local Humanoid = hit.Parent:FindFirstChild("Humanoid") local player = game:GetService('Players'):GetPlayerFromCharacter(Tool:FindFirstAncestorOfClass('Model')) if Humanoid and CanDamage then UnTagCreator(Humanoid)--NPCにタグがついていたら外す TagCreator(Humanoid, player)--NPCに自分のプレイヤータグをつける Humanoid.Health = Humanoid.Health - 20 if idleAnim1 then idleAnim1:Stop() end if idleAnim2 then idleAnim2:Stop() end SlashHit1:Play() CanDamage = false end end)
敵NPCScriptのDied関数の修正
npc.Humanoid.Died:Connect(function() walkAnim:Stop() local tag = npc.Humanoid:FindFirstChild("creator") if tag then local player = tag.Value --タグの値に格納されたプレイヤーを取得 --NPCに設定されたGoldの値をリーダーボードのGoldに加算 player.leaderstats.Gold.Value = player.leaderstats.Gold.Value + npc.Gold.Value local TweenService = game:GetService("TweenService") for i=1, 5 do --5枚のコイン生成するループ処理 local gold = game.ReplicatedStorage.Gold:Clone() gold.CanTouch = false gold.Parent = game.Workspace --Headパーツの少し上にコインを出現させy軸方向に打ち上げ。xz軸はランダムにばらけさせる gold.Position = npc.Head.Position + Vector3.new(0, 3, 0) gold.Velocity = Vector3.new(math.random(-10, 10), 50, math.random(-10, 10)) gold.coins_get:Play()--サウンドを再生 --4秒後にフェードアウト local goldTween = TweenService:Create(gold, TweenInfo.new(4), {Transparency = 1}) goldTween:Play() wait(0.05) end end wait(3) npc:Destroy() end)
ReplicatedStorageの敵NPCモデルに「Gold」という名前の「IntValue」を追加(値は加算したい数値)
ReplicatedStorageのGoldパーツのコイン収集Scriptは不要になるので、無効もしくは削除
マルチプレイテスト
最後に倒したプレイヤーのGoldだけが加算されていることを確認
コメント