アニメーションを作ろう!その3
斬るアニメーション
前回は大剣を担いで移動するアニメーションを作ったので、今回は大剣で斬るアニメーションを作っていくよ。さらにアニメーションに合わせてサウンドもつけてみよう♪
また前回と同じように自分のモデルを使ってアニメーションを作っていくよ。
ヘッダーメニューのPLUGINから「AnimationEditor」をクリック。
アニメーションを作りたいModelを選択するとアニメーション名を聞かれるから名前をつけよう。大剣で斬るアニメーションだから、ここでは「slash1」にするね。
タイムライン「0:00」では構えのポーズ。
タイムライン「0:03」あたりで振りかぶって。
タイムライン「0:06」あたりで振り下ろす。
重い大剣をイメージさせるためにタイムライン「0:24」にも振り下ろしのポーズをコピーしたよ。タイムラインの間隔はお好みでOK。
次に優先度を「Action」に設定。アニメーション名の右端の「・・・」から「Set Animation Priority」を選択。
次にこのアニメーションをRobloxで使えるようにIDを発番するよ。もう一度アニメーション名の右端の「・・・」から「Publish to Roblox」を選択。
Descriptionで説明を追記できるけど、今回はこのまま「Submit」。
IDのとなりの「□」をクリックするとコピーできるよ。コピーして「Close」で閉じたら、剣にアニメーションを追加するよ。
- 「StarterPack」>「Buster Sword」>「Handle」の「+」から「Animation」を追加。
- 追加したAnimationを選択して、PropertiesからNameを「Animation」から「slash1」に変更。
- AnimationIdにさっきコピーしたIDをペースト。
次に素振りのときのサウンドと敵にHitしたときのサウンドを探そう♪
種類を「Audio」に絞ってから「slash」とかで検索すると好みのサウンドが見つかると思うよ。どんなサウンドか確認する方法はいくつかあるけど、クリックするとWorkspaceに追加されるから、プレビューで再生して気に入らなければ削除するのが一番簡単だと思う。
好みのサウンドが見つかったら「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」に戻しているよ。この斬るアニメーションのディレイはお好みで調整してみよう。
それじゃあ。実際にテストしてよう。
アニメーションとサウンド、設定したディレイが効いて連打できなければ成功だよ!
次回は敵にダメージを与えるプログラムを作っていくよ。
それじゃ~またね~。(@^^)/~~~
コメント