处理场景中对象的位置、旋转和缩放。
TransformSceneHandle 是只读的。
TransformSceneHandle 是对 TransformAccess 的安全句柄。用于创建此句柄的 Animator 管理此句柄的有效性。
using UnityEngine; using UnityEngine.Playables; using UnityEngine.Animations;
public struct TransformSceneHandleJob : IAnimationJob { public TransformSceneHandle handle;
public void ProcessRootMotion(AnimationStream stream) { // Log the local position. var position = handle.GetLocalPosition(stream); Debug.LogFormat("Position: {0}", position);
// Log the local rotation (converted from euler). var rotation = handle.GetLocalRotation(stream); Debug.LogFormat("Rotation: {0}", rotation.eulerAngles);
// Log the local scale. var scale = handle.GetLocalScale(stream); Debug.LogFormat("Scale: {0}", scale); }
public void ProcessAnimation(AnimationStream stream) { } }
[RequireComponent(typeof(Animator))] public class TransformSceneHandleExample : MonoBehaviour { public Transform sceneTransform;
PlayableGraph m_Graph; AnimationScriptPlayable m_AnimationScriptPlayable;
void Start() { if (sceneTransform == null) return;
var animator = GetComponent<Animator>();
m_Graph = PlayableGraph.Create("TransformSceneHandleExample"); var output = AnimationPlayableOutput.Create(m_Graph, "output", animator);
var animationJob = new TransformSceneHandleJob(); animationJob.handle = animator.BindSceneTransform(sceneTransform); m_AnimationScriptPlayable = AnimationScriptPlayable.Create(m_Graph, animationJob);
output.SetSourcePlayable(m_AnimationScriptPlayable); m_Graph.Play(); }
void OnDisable() { if (sceneTransform == null) return;
m_Graph.Destroy(); } }
其他资源:AnimatorJobExtensions.BindSceneTransform、PropertySceneHandle、PropertyStreamHandle 和 TransformStreamHandle。
GetGlobalTR | 获取变换在世界空间中的位置和缩放旋转。 |
GetLocalPosition | 获取相对于父级的变换位置。 |
GetLocalRotation | 获取相对于父级的变换旋转。 |
GetLocalScale | 获取相对于父级的变换缩放。 |
GetLocalToParentMatrix | 获取变换的局部到父级的矩阵。 |
GetLocalToWorldMatrix | 获取变换的局部到世界矩阵。 |
GetLocalTRS | 获取相对于父级的变换位置、旋转和缩放。 |
GetPosition | 获取变换在世界空间中的位置。 |
GetRotation | 获取变换在世界空间中的旋转。 |
IsValid | 返回此句柄是否有效。 |