我正在使用Unity和Vuforia,并希望在AR对象上制作动画,该动画在找到目标时开始,并在丢失目标时重置,以便在再次找到目标时从头开始动画。
为了使动画仅在找到目标后才开始,我在动画器组件的“消隐模式”属性中选择了“完全消隐”选项。但是当目标丢失时,我无法重设动画!我曾尝试修改DefaultTrackableEventHandler脚本(OnTrackingFound和OnTrackingLost方法),但是它不起作用。
到目前为止,我已经尝试过:
Animation[] animationComponents = GetComponentsInChildren<Animation>();
foreach (Animation component in animationComponents)
{
component.Stop();
}
和一些变化形式(动画名称是Stop方法的参数,是动画组件而不是动画组件,...)。
有人知道该怎么做吗?
感谢您的关注:)
答案 0 :(得分:1)
我知道一种以更简单的方式完成您想要的事情的方法。寻找https://docs.unity3d.com/Manual/class-State.html
使用动画状态,您将获得相同的结果,但方式不同。
然后转到动画器窗口
您可以构建类似的东西。这些是与动画相关联的状态之间的转换。
也来看看这个https://docs.unity3d.com/Manual/class-Transition.html
因此,在您的脚本中,您可以通过以下方式访问Animator:
Animator MyAnimator = GetComponent<Animator>();
在游戏中您所处环境中的某个位置,您可以执行以下操作:
MyAnimator.Play("Attack");
如果该动画没有过渡,则将由您决定使其成为循环动画(结束时将重复),或者将其保留在动画最后一帧的位置。
在某些条件下,例如您所希望的条件,您可以执行以下操作。
if (Vector3.Distance(this.transform.position, myTarget.transform.position) >= 2f) {
MyAnimator.Play("Idle");
}
警告:Vector3.Distance可能不是最好,最快的方法,仅作为示例。请记住,始终尝试根据项目要求优化代码。