struct in UnityEngine.Experimental.Animations
/
Implemented in:UnityEngine.AnimationModule
Position, rotation and scale of an object in the Scene.
A TransformSceneHandle is a safe handle on a TransformAccess. The Animator used to create this handle manages the validity of this handle.
using UnityEngine; using UnityEngine.Playables; using UnityEngine.Animations;
using UnityEngine.Experimental.Animations;
public struct TransformSceneHandleJob : IAnimationJob { public TransformSceneHandle 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 TransformSceneHandleExample : MonoBehaviour { public Transform sceneTransform; public Vector3 position; public Vector3 rotation; public Vector3 scale = Vector3.one;
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 Update() { if (sceneTransform == null) return;
var animationJob = m_AnimationScriptPlayable.GetJobData<TransformSceneHandleJob>(); animationJob.position = position; animationJob.rotation = rotation; animationJob.scale = scale; m_AnimationScriptPlayable.SetJobData(animationJob); }
void OnDisable() { if (sceneTransform == null) return;
m_Graph.Destroy(); } }
See Also: AnimatorJobExtensions.BindSceneTransform, PropertySceneHandle, PropertyStreamHandle, and TransformStreamHandle.
GetLocalPosition | Gets the position of the transform relative to the parent. |
GetLocalRotation | Gets the rotation of the transform relative to the parent. |
GetLocalScale | Gets the scale of the transform relative to the parent. |
GetPosition | Gets the position of the transform in world space. |
GetRotation | Gets the rotation of the transform in world space. |
IsValid | Returns whether this is a valid handle. |
SetLocalPosition | Sets the position of the transform relative to the parent. |
SetLocalRotation | Sets the rotation of the transform relative to the parent. |
SetLocalScale | Sets the scale of the transform relative to the parent. |
SetPosition | Sets the position of the transform in world space. |
SetRotation | Sets the rotation of the transform in world space. |