KeyframeMarker
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
キーフレームマーカーは、Keyframe がヒットすると最終的に発動するイベントを表すインスタンスです。
キーフレームマーカーを使用する
キーフレームマーカーは、親を直接設定したり、キーフレームの Keyframe:AddMarker() 関数を使用したりして、常に親にキーフレームに属する必要があります。キーフレームマーカーも直接削除するか、Keyframe:RemoveMarker() 関数を使用して削除し、Keyframe:GetMarkers() を使用して特定のキーフレームにどのマーカーが付属しているかをチェックできます。
キーフレームがアニメーションとして検出されるたびに、キーフレームに親属する各キーフレームマーカーにイベントが発射されます。これらのイベントは、キーフレームマーカーの名前で識別できます。AnimationTrack.GetKeyframeMarkerReached 関数を使用して、これらのイベントを回収して聴くことができます。オプションで、キーフレームマーカーの KeyframeMarker.Value プロパティを設定して、発射されたイベントの値を伝えることができます。
それは Keyframe.Name プロパティを Instance から継承し、同様に動作します。名前は識別に使用され、唯一である必要はありません。同じ名前の複数の KeyframeMarker インスタンスが Keyframe に付属しているとき、AnimationTrack:GetMarkerReachedSignal() によって返されたイベントなど、すべてのマーカーに対してイベントが発動します。
参照してください:
- , 特定の時点のアニメーションで適用されたジョイントに を保持します
- Animation , は、Roblox アニメーションシステムを使用して、キャラクターまたはその他のモデルでカスタムアニメーションを再生するのに必要なアニメーションデータの参照を保持
コードサンプル
この例では、Keyframe:AddMarker() および Keyframe:GetMarkers() 機能を示しています。2つのマーカーを追加し、marker1 と marker2 をキーフレームに追加した後、この例では、追加されたマーカーの名前を取得し、印刷します。
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "FootStep"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Wave"
marker2.Value = 100
keyframe:AddMarker(marker1) --マーカー.Parent = キーフレーム
keyframe:AddMarker(marker2) --マーカー.Parent = キーフレーム
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
This LocalScript code waits for the local player's Humanoid object to load, then it creates a new Animation instance with the proper Animation.AnimationId. The animation is then loaded onto the humanoid, creating an AnimationTrack, and the track is played with AnimationTrack:Play(). Following that, the AnimationTrack:GetMarkerReachedSignal() function detects when the "KickEnd" marker is hit.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.Character:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Create new "Animation" instance
local kickAnimation = Instance.new("Animation")
-- Set its "AnimationId" to the corresponding animation asset ID
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Load animation onto the humanoid
local kickAnimationTrack = humanoid:LoadAnimation(kickAnimation)
-- Play animation track
kickAnimationTrack:Play()
-- If a named event was defined for the animation, connect it to "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
概要
プロパティ
Value
KeyframeMarker に指定された値。AnimationTrack:GetMarkerReachedSignal() から作成されたシグナルが発射されるたびに、この値は接続された関数にパスされます。
参照してください:
- , 特定の時点のアニメーションで適用されたジョイントに を保持します
コードサンプル
この例では、Keyframe:AddMarker() および Keyframe:GetMarkers() 機能を示しています。2つのマーカーを追加し、marker1 と marker2 をキーフレームに追加した後、この例では、追加されたマーカーの名前を取得し、印刷します。
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "FootStep"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Wave"
marker2.Value = 100
keyframe:AddMarker(marker1) --マーカー.Parent = キーフレーム
keyframe:AddMarker(marker2) --マーカー.Parent = キーフレーム
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
この例では、Keyframe:AddMarker() および Keyframe:RemoveMarker() 機能を示しています。これらは機能的に parenting と同等であり、マーカーを親から取り除いています。
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --マーカー.Parent = キーフレーム
task.wait(2)
keyframe:RemoveMarker(marker) --marker.Parent = nil