对象在 AnimationStream 中的位置、旋转和缩放。
using UnityEngine; using UnityEngine.Playables; using UnityEngine.Animations;
public struct TransformStreamHandleJob : IAnimationJob { public TransformStreamHandle handle; public Vector3 position; public Vector3 rotation; public Vector3 scale;
public void ProcessRootMotion(AnimationStream stream) { // Set the new local position. handle.SetLocalPosition(stream, position);
// Set the new local rotation (converted from euler). handle.SetLocalRotation(stream, Quaternion.Euler(rotation));
// Set the new local scale. handle.SetLocalScale(stream, scale); }
public void ProcessAnimation(AnimationStream stream) { } }
[RequireComponent(typeof(Animator))] public class TransformStreamHandleExample : MonoBehaviour { public Vector3 position; public Vector3 rotation; public Vector3 scale = Vector3.one;
PlayableGraph m_Graph; AnimationScriptPlayable m_AnimationScriptPlayable;
void Start() { var animator = GetComponent<Animator>();
m_Graph = PlayableGraph.Create("TransformStreamHandleExample"); var output = AnimationPlayableOutput.Create(m_Graph, "output", animator);
var animationJob = new TransformStreamHandleJob(); animationJob.handle = animator.BindStreamTransform(gameObject.transform); m_AnimationScriptPlayable = AnimationScriptPlayable.Create(m_Graph, animationJob);
output.SetSourcePlayable(m_AnimationScriptPlayable); m_Graph.Play(); }
void Update() { var animationJob = m_AnimationScriptPlayable.GetJobData<TransformStreamHandleJob>(); animationJob.position = position; animationJob.rotation = rotation; animationJob.scale = scale; m_AnimationScriptPlayable.SetJobData(animationJob); }
void OnDisable() { m_Graph.Destroy(); } }
其他资源: AnimatorJobExtensions.BindStreamTransform、PropertyStreamHandle、PropertySceneHandle 和 TransformSceneHandle。
GetGlobalTR | 获取变换在世界空间中的位置和缩放旋转。 |
GetLocalPosition | 获取变换相对于父级的坐标。 |
GetLocalRotation | 获取变换相对于父级的旋转。 |
GetLocalScale | 获取变换相对于父级的缩放比例。 |
GetLocalToParentMatrix | 获取变换的局部到父级的矩阵。 |
GetLocalToWorldMatrix | 获取变换的局部到世界矩阵。 |
GetLocalTRS | 获取变换相对于父级的坐标、旋转和缩放比例。 |
GetPosition | 获取变换在世界空间中的坐标。 |
GetPositionReadMask | 获取变换的坐标读取掩码。 |
GetRotation | 获取变换在世界空间中的旋转。 |
GetRotationReadMask | 获取变换的旋转读取掩码。 |
GetScaleReadMask | 获取变换的缩放比例读取掩码。 |
IsResolved | 返回此句柄是否已解析。 |
IsValid | 返回此句柄是否有效。 |
Resolve | 使用来自 AnimationStream 的动画值绑定此句柄。 |
SetGlobalTR | 设置变换在世界空间中的坐标和旋转。 |
SetLocalPosition | 设置变换相对于父级的坐标。 |
SetLocalRotation | 设置变换相对于父级的旋转。 |
SetLocalScale | 设置变换相对于父级的缩放比例。 |
SetLocalTRS | 设置变换相对于父级的坐标、旋转和缩放比例。 |
SetPosition | 设置变换在世界空间中的坐标。 |
SetRotation | 设置变换在世界空间中的旋转。 |