【ロブロックスでプログラミング学習】ゲームの作り方!Part04 NPCの倒し方

Roblox

NPCにダメージをあたえよう

前回は大剣で斬るアニメーションを作ったから、今回は大剣がNPCに当たったらダメージを与えるプログラミングをしていくよ。また、NPCに当たった時と素振りした時の音を切り替えてみよう。

NPCにダメージを与えるプログラミング

今回特に準備するものはないから早速スクリプトを編集していくよ。アニメーション作成用の自分をコピーしたModelをNPCとしてサンドバッグになってもらおう( ´艸`)

local Tool = script.Parent
local Sword = Tool:WaitForChild('Handle')

local idleAnim1
local idleAnim2

local Event

local Debounce = true
local CanDamage = false
	
-- Animations
local idle = Tool.Handle.idle
local moving = Tool.Handle.moving
local slash1 = Tool.Handle.slash1

-- Sounds
local SlashMiss1 = Tool.Handle.Slash1
local SlashHit1 = Tool.Handle.Slash2

Sword.Touched:Connect(function(hit)
  local Humanoid = hit.Parent:FindFirstChild("Humanoid")
  if Humanoid and CanDamage then

    hit.Parent.Humanoid.Health = hit.Parent.Humanoid.Health - 10
    SlashHit1:Play()

    CanDamage = false
  end
end)

Tool.Equipped:Connect(function()
	(中略)
end)


Tool.Activated:Connect(function()
  local humanoid = Tool.Parent:FindFirstChildWhichIsA("Humanoid")
  local playanim = humanoid:LoadAnimation(slash1)
  if Debounce then
    Debounce = false
    CanDamage = true
    if idleAnim1 then
      idleAnim1:Stop()
    end
    if idleAnim2 then
      idleAnim2:Stop()
    end
		
    playanim:Play()
    SlashMiss1:Play()
    wait(1)
    Debounce = true
  end
end)


Tool.Unequipped:Connect(function()
	(中略)
end)

local Sword = Tool:WaitForChild(‘Handle’)」まずツールから「Handle」のPart部分の変数と「local CanDamage = false」ダメージ制御用変数を準備しているよ。

Sword.Touched:Connect(function(hit)」今回はこの関数で「Buster Sword」の「Handle」のPartが触れたもの(hit)が「Humanoid」だったらダメージを与える処理にするよ。

hit.Parent:FindFirstChild(“Humanoid”)」これで「Handle」のPartが触れたものに「Humanoid」があるか探しにいくよ。

Search Humanoid

今回のサンドバッグはWorkspaceに置いてある自分のキャラクター(Kei_Labo)がParentだからその中に「Humanoid」が見つかるね。

見つかったら「Humanoid」変数に格納するよ。

次のIF文で「Humanoid」が「true」(空でなければ「true」の判定になる)かつ「CanDamage」が「true」だったら「end」までの処理を実行。

次に処理の中身だ。

hit.Parent.Humanoid.Health = hit.Parent.Humanoid.Health - 10

これは「Handle」のPartが触れた「Humanoid」のHealthプロパティを10引いた数値で上書きしているよ。

Humanoid Health

サンドバッグの「Humanoid」のPropertiesを見ると「MaxHealth」が100ってことがわかるね。ダメージを与えると「Health」の100が減っていくんだ。

次にサンドバッグにHitしたとき用のサウンドを再生して、「CanDamage」をfalseに切り替えてるね。ところで「CanDamage」はいつ「true」にするかというと前回追加した「クリックしたときの処理」で「Debounce」変数が「true」だったら「CanDamage」も「true」にしてるよ。

今回特に大剣の振り下ろしたあとのディレイが長いから、この制御をしないとサンドバッグに大剣が触れている間ダメージを与え続けちゃうんだ。

それじゃあ。実際にテストしてよう。

Damage

Hit用のサウンドに切り替わって、サンドバッグのHPバーが減っていけば成功だ!

次回はサンドバッグじゃなくて、敵のNPCを作っていくよ~♪

それじゃ~またね~。(@^^)/~~~

コメント

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