I-E3 アニメーションを追加する

ゲーム内でアニメーションを実装するには、スクリプトを使用します。このチュートリアルでは、先ほど作成したジャンプパフォーマンスのアニメーションを、既成のスクリプトを使って実装します。このアニメーションは、オービーの最後に到達したときや、宝箱を見つけたときなど、プレイヤーの達成を祝うために使用することができます。

スクリプト アニメーション

アニメーションは、スクリプトを使用して起動されます。例えば、プレイヤーがレベルをクリアしたとき、敵を倒したとき、あるいはゲーム内で購入したときなど、さまざまな状況でアニメーションを再生するためにイベントを使用する方法があります。

プロジェクトを設定する

このプロジェクトでは、タッチするとそのプレイヤーのアニメーションが再生するパーツを作成します。

  1. アニメーションを再生する全てのパーツを整理するために、Workspace に TouchPartFolder というフォルダを追加します。
  2. TouchPartFolder にパーツを追加します。

例えば、レベルの最後やプレイヤーが収集するオブジェクトの近くなど、アニメーションを再生するのに適した場所にパーツを配置するようにしてください。

例:ゴール!
例:宝発見!
  1. StarterPlayer > StarterCharacterScriptsで、TouchPartRegister という名前の LocalScript を作成します。そして、以下のコードをコピー&ペーストしてください。
-- PlayerAnimationFeedback "スクリプトと併用し、パーツタッチ時にアニメーションを再生する

-- Services
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local player = Players.LocalPlayer
local character = player.Character or player.Character:Wait()
local humanoid = character:WaitForChild("Humanoid")
local canTouch = false

-- フィードバックアニメーションのモジュールスクリプトのロード
local PlayerAnimationFeedback = require(ReplicatedStorage:WaitForChild("PlayerAnimationFeedback"))

-- Function called when a part is touched
local function onPartTouch(otherPart)
    if humanoid and canTouch == false then
        canTouch = true
        PlayerAnimationFeedback:PlayAnimation()
        canTouch = false
    end
end

-- 起動時に、アニメーションモジュールのロード関数を呼び出す
PlayerAnimationFeedback:LoadAnimation(humanoid)
-- touchPartFolder内の全パーツにタッチイベントを接続する
local touchPartFolder = workspace:WaitForChild("TouchPartFolder")
local touchParts = touchPartFolder:GetChildren()

for objectIndex = 1, #touchParts do
    local touchPart = touchParts[objectIndex]
    touchPart.Touched:Connect(onPartTouch)
end

このスクリプトは TouchPartFolder にあるすべてのパーツを見つけ、それらに Touched() イベントを与えます。イベントが発生すると、プレーヤーに対してアニメーションを再生する関数が実行されます。

このスクリプトではTouched()を使用していますが、MouseClick()やChanged()などの別のイベントを使用することも可能です。さらに、プレイヤーにポイントを与えるなど、独自のゲーム イベントを TouchPartRegister スクリプトから実行することができます。
  1. 次のスクリプトは、プレーヤーのアニメーションをトリガーします。ReplicatedStorage に、PlayerAnimationFeedback という名前の新しい ModuleScript を作成します。そして、以下のコードをコピー&ペーストしてください。
-- TouchPartRegister スクリプトと併用し、プレイヤーにアニメーションを再生する
local PlayerAnimationFeedback = {}

local feedbackAnimationTrack
local ANIMATION_FADE = 0.3
local ANIMATION_ID = "rbxassetid://YOUR_ANIMATION"

-- プレイヤーのキャラクターにアニメーションを読み込む関数
function PlayerAnimationFeedback:LoadAnimation(humanoid)
    local feedbackAnimation = Instance.new("Animation")
    feedbackAnimation.AnimationId = ANIMATION_ID
    feedbackAnimationTrack = humanoid:LoadAnimation(feedbackAnimation)
    feedbackAnimationTrack.Priority = Enum.AnimationPriority.Action
    feedbackAnimationTrack.Looped = false
end

-- アニメーションを再生する関数
function PlayerAnimationFeedback:PlayAnimation()
    feedbackAnimationTrack:Play(ANIMATION_FADE)
    wait(feedbackAnimationTrack.Length)
end

return PlayerAnimationFeedback

アニメーションの再生

アニメーションは、スクリプトで識別し、ロードして再生する必要があります。

アニメーションの設定

スクリプトは、どのアニメーションを再生するかを知る必要があります。エクスポートされたアニメーションを使用するには、Web ブラウザでそのアセット ID を探します。そのIDによって、そのアニメーションをスクリプトに読み込むことができます。

  1. 作成ページのアニメーションセクションを開きます。
  2. エクスポートされたアニメーションを見つけてクリックします。
  3. ブラウザの URL からその ID をコピーします。
  1. スクリプト「PlayerAnimationFeedback」のプレースホルダー「YOUR_ANIMATION」をコピーしたIDに置き換えます。
  1. プロジェクトを実行し、プレーヤーがパーツに当たるとアニメーションが再生されることを確認してください。

コメントを残す