我决定尝试将带有动画的 FBX 中的 Blender 模型导出到 Unity。该模型的顶门有两个动画,打开和关闭。事情是这样的——我的模型似乎喜欢在模型开始时跳入两个动画的起源,即。如果我导入模型并且门是打开的,并且我决定触发关闭它,它会正确关闭 - 但是当我尝试打开它时,它决定它需要保持在与关闭门动画相同的原点首先,然后它打开 - 基本上导致门在模型之外移动得太远。
我还特意尝试在 Mecanim 动画器控件中依靠 ONE 动画 - 但是当它朝相反方向移动时,它似乎回到了门的正确位置,但它并没有以相同的速度完成,但这样做不规律。最后,当我尝试让一个门动画过渡到具有相反速度的相同门动画(即门接近关门,一个速度为 1,一个速度为 -1)时,它仍然会不规律地跳跃。
这是我尝试的最后一个 Mecanim 动画师设置:
这是尝试在另一个状态下使用相同动画的方法,但速度为负速度而不是正速度。它不像你期望的那样工作。
我在下面的代码中使用状态触发器在这些状态之间进行转换:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
public class TriggerAnimation : MonoBehaviour {
public Transform cockPit;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown("t"))
{
//AnimationPlayableUtilities.PlayClip("CockPit_ExtDoor|Open");
Debug.Log("I'm being pressed");
//GetComponent<Animator>().SetTrigger("ExtDoorOpen");
GetComponent<Animator>().SetTrigger("IntDoorOpen");
//GetComponent<Animator>().SetTrigger("CockPit_Door|Open");
}
if (Input.GetKeyDown("u"))
{
//PlayableGraph graph = new PlayableGraph();
//AnimationPlayableUtilities.PlayAnimatorController(GetComponent<Animator>(), GetComponent<RuntimeAnimatorController>(), out graph);
Debug.Log("I'm being pressed");
//GetComponent<Animator>().SetTrigger("ExtDoorClose");
GetComponent<Animator>().SetTrigger("IntDoorClose");
//GetComponent<Animator>().SetTrigger("CockPit_Door|Close");
}
if (Input.GetKeyDown("x"))
{
GetComponent<Animation>().Play("CockPit_IntDoor|Open");
}
if (Input.GetKeyDown("z"))
{
GetComponent<Animation>().Play("CockPit_IntDoor|Close");
}
}
}
有人可以让我知道是否有更好的方法来解决这个问题以及如何解决?我试过在这方面的几篇文章之间跳转,包括他们网站上关于 Mecanim for Unity 的演示教程 - 没有骰子......