Experimental: this API is experimental and might be changed or removed in the future.

TransformStreamHandle

struct in UnityEngine.Experimental.Animations

切换到手册

描述

AnimationStream 中对象的位置、旋转和缩放。

using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Animations;

using UnityEngine.Experimental.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(); } }

公共函数

GetLocalPosition获取相对于父对象的变换位置。
GetLocalRotation获取相对于父对象的变换旋转。
GetLocalScale获取相对于父对象的变换缩放。
GetPosition获取世界坐标系中的变换位置。
GetRotation获取世界坐标系中的变换旋转。
IsResolved返回有关是否已解析此句柄的信息。
IsValid返回有关此句柄是否有效的信息。
Resolve使用 AnimationStream 中的动画值绑定此句柄。
SetLocalPosition设置相对于父对象的变换位置。
SetLocalRotation设置相对于父对象的变换旋转。
SetLocalScale设置相对于父对象的变换缩放。
SetPosition设置世界坐标系中的变换位置。
SetRotation设置世界坐标系中的变换旋转。