KeyframeMarker
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
キーフレームマーカーは、Keyframe がヒットすると最終的に発動するイベントを表すインスタンスです。
キーフレームマーカーを使用する
キーフレームマーカーは、親を直接設定したり、キーフレームの Keyframe:AddMarker() 関数を使用したりして、常に親にキーフレームに属する必要があります。キーフレームマーカーも直接削除するか、Keyframe:RemoveMarker() 関数を使用して削除し、Keyframe:GetMarkers() を使用して特定のキーフレームにどのマーカーが付属しているかをチェックできます。
キーフレームがアニメーションとして検出されるたびに、キーフレームに親属する各キーフレームマーカーにイベントが発射されます。これらのイベントは、キーフレームマーカーの名前で識別できます。AnimationTrack.GetKeyframeMarkerReached 関数を使用して、これらのイベントを回収して聴くことができます。オプションで、キーフレームマーカーの KeyframeMarker.Value プロパティを設定して、発射されたイベントの値を伝えることができます。
それは Keyframe.Name プロパティを Instance から継承し、同様に動作します。名前は識別に使用され、ユニークである必要はありません。同じ名前の複数のキーフレームマーカーがキーフレームに付属したとき、AnimationTrack:GetMarkerReachedSignal() によって返されたイベントなどのイベントは、すべてのマーカーに発射します。
参照してください:
- , 特定の時点のアニメーションで適用されたジョイントに を保持します
- Animation , は、Roblox アニメーションシステムを使用して、キャラクターまたはその他のモデルでカスタムアニメーションを再生するのに必要なアニメーションデータの参照を保持
コードサンプル
This example demonstrates the Keyframe:AddMarker() and Keyframe:GetMarkers() functions. After adding two markers, marker1 and marker2 to the keyframe, this example gets and prints the names of the added markers.
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) --marker.Parent = keyframe
keyframe:AddMarker(marker2) --marker.Parent = keyframe
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() から作成されたシグナルが発射されるたびに、この値は接続された関数にパスされます。
参照してください:
- , 特定の時点のアニメーションで適用されたジョイントに を保持します
コードサンプル
This example demonstrates the Keyframe:AddMarker() and Keyframe:GetMarkers() functions. After adding two markers, marker1 and marker2 to the keyframe, this example gets and prints the names of the added markers.
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) --marker.Parent = keyframe
keyframe:AddMarker(marker2) --marker.Parent = keyframe
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
This example demonstrates the Keyframe:AddMarker() and Keyframe:RemoveMarker() functions. Note these are functionally equivalent to parenting and un-parenting the markers.
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --marker.Parent = keyframe
task.wait(2)
keyframe:RemoveMarker(marker) --marker.Parent = nil