【ロブロックスでプログラミング学習】ゲームの作り方!Part03 クリックアニメーション

Roblox

アニメーションを作ろう!その3

斬るアニメーション

前回は大剣を担いで移動するアニメーションを作ったので、今回は大剣で斬るアニメーションを作っていくよ。さらにアニメーションに合わせてサウンドもつけてみよう♪

また前回と同じように自分のモデルを使ってアニメーションを作っていくよ。

ヘッダーメニューのPLUGINから「AnimationEditor」をクリック。

AnimationEditor

アニメーションを作りたいModelを選択するとアニメーション名を聞かれるから名前をつけよう。大剣で斬るアニメーションだから、ここでは「slash1」にするね。

slash1 animation1

タイムライン「0:00」では構えのポーズ。

slash1 animation2

タイムライン「0:03」あたりで振りかぶって。

slash1 animation3

タイムライン「0:06」あたりで振り下ろす。

重い大剣をイメージさせるためにタイムライン「0:24」にも振り下ろしのポーズをコピーしたよ。タイムラインの間隔はお好みでOK。

次に優先度を「Action」に設定。アニメーション名の右端の「・・・」から「Set Animation Priority」を選択。

Priority Action

次にこのアニメーションをRobloxで使えるようにIDを発番するよ。もう一度アニメーション名の右端の「・・・」から「Publish to Roblox」を選択。

Asset Configuration slash1

Descriptionで説明を追記できるけど、今回はこのまま「Submit」。

Asset Configuration slash1 Submit

IDのとなりの「□」をクリックするとコピーできるよ。コピーして「Close」で閉じたら、剣にアニメーションを追加するよ。

Properties slash1
  1. 「StarterPack」>「Buster Sword」>「Handle」の「+」から「Animation」を追加。
  2. 追加したAnimationを選択して、PropertiesからNameを「Animation」から「slash1」に変更。
  3. AnimationIdにさっきコピーしたIDをペースト。

次に素振りのときのサウンドと敵にHitしたときのサウンドを探そう♪

Toolbox Audio

種類を「Audio」に絞ってから「slash」とかで検索すると好みのサウンドが見つかると思うよ。どんなサウンドか確認する方法はいくつかあるけど、クリックするとWorkspaceに追加されるから、プレビューで再生して気に入らなければ削除するのが一番簡単だと思う。

Sound Preview

好みのサウンドが見つかったら「Buster Sword」>「Handle」の下に移動させておいてね。今回は「Slash1」が素振り用、「Slash2」がHit用として準備したよ。

プログラミングでアニメーションを適用

あとは大剣を装備した状態で左クリックしたら、このアニメーションとサウンドが適用されるように前回のスクリプトを編集していくよ。

local Tool = script.Parent

local idleAnim1
local idleAnim2

local Event

local Debounce = true
	
-- 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

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
    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)

まずは、連打防止用の「Debounce」変数と斬るアニメーションとサウンドの変数を準備したよ。

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

次に左クリックされたときの処理はこの関数の中に処理を書くって覚えておけばいいよ。

Tool.Activated:Connect(function()    

処理の内容としては、前回と同じように今度は斬るアニメーションを「Humanoid」から読み込んでるね。

次に連打防止用に用意した「Debounce」変数が「true」かどうかIF文で判定しているよ。ここでは最初固定で「true」をセットしたから最初は必ず中の処理が「end」まで実行されるよ。

中の処理に入ったらまず一旦「Debounce」変数にfalseに書き換えてるんだ。これでこの処理が連続で実行されることを防いでいるんだね。

次に「idleAnim1」と「idleAnim2」つまり「idle」「moving」アニメーションを一旦停止。

そのあとアニメーションとサウンドを再生しているね。

そのあと1秒待ってから「Debounce」変数を「true」に戻しているよ。この斬るアニメーションのディレイはお好みで調整してみよう。

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

Play Slash1

アニメーションとサウンド、設定したディレイが効いて連打できなければ成功だよ!

次回は敵にダメージを与えるプログラムを作っていくよ。

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

コメント

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