C# 当目标丢失时如何重置动画序列

C# 当目标丢失时如何重置动画序列,c#,unity3d,vuforia,C#,Unity3d,Vuforia,我正在使用Unity和Vuforia,希望在AR对象上制作一个动画,在找到目标时开始,在目标丢失时重置,以便在再次找到目标时,动画从头开始 为了使动画仅在找到目标后启动,我在animator组件的Culling Mode属性中选择了选项“完全消隐”。但我无法在目标丢失时重置动画!我尝试过修改DefaultTrackableEventHandler脚本(OnTrackingFound和OnTrackingLost方法),但它不起作用 到目前为止,我已经尝试: Animation[] animati

我正在使用Unity和Vuforia,希望在AR对象上制作一个动画,在找到目标时开始,在目标丢失时重置,以便在再次找到目标时,动画从头开始

为了使动画仅在找到目标后启动,我在animator组件的Culling Mode属性中选择了选项“完全消隐”。但我无法在目标丢失时重置动画!我尝试过修改DefaultTrackableEventHandler脚本(OnTrackingFound和OnTrackingLost方法),但它不起作用

到目前为止,我已经尝试:

Animation[] animationComponents = GetComponentsInChildren<Animation>();
foreach (Animation component in animationComponents)
{
    component.Stop();
}
Animation[]animationComponents=GetComponentsInChildren();
foreach(animationComponents中的动画组件)
{
component.Stop();
}
和一些变体(动画名称作为停止方法的参数,animator组件代替动画组件,…)

有人知道怎么做吗


谢谢你的关注:)

我知道一种简单的方法来做你想做的事。寻找

使用动画状态将获得相同的结果,但方式不同

然后转到animator窗口

你可以建造这样的东西。这些是与动画关联的状态之间的转换

也来看看这个

因此,在脚本中,您可以通过以下方式访问动画师:

Animator MyAnimator = GetComponent<Animator>();
如果该动画没有过渡,则您将决定将其制作为循环动画(结束时将重复),或者它将保持在动画最后一帧的位置

有了一些你可能想要的条件,比如你问题中的条件,你可以这样做

if (Vector3.Distance(this.transform.position, myTarget.transform.position) >= 2f) {
  MyAnimator.Play("Idle");
}

警告:矢量3。距离可能不是最好、最快的方法,这只是一个例子。请记住始终尝试根据项目要求优化代码。

我刚刚使用了MyAnimator。播放部分:当找到目标时,我播放序列的第一个动画。它的工作原理与我所希望的一样,但这是正确的方法还是应该使用Vector3.Distance()之类的工具?非常感谢你的回答,帮了我很多忙:)
if (Vector3.Distance(this.transform.position, myTarget.transform.position) >= 2f) {
  MyAnimator.Play("Idle");
}