【Roblox Studio】敵を倒したプレイヤーだけにコインを獲得させたい!

実験室

仕様変更

攻撃時のタグの付け外しで最後にタグをつけた(敵を倒した)プレイヤーだけに報酬を与える仕組みを採用

コインの収集も廃止で倒したら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だけが加算されていることを確認

課題①:コインのドロップ演出は獲得したプレイヤーだけにしたい!

コメント

タイトルとURLをコピーしました