当我的角色跳跃时,如何让我的动画团结一致

时间:2014-05-01 18:47:36

标签: c# animation unity3d

我正在制作一个角色不断上下跳跃的游戏。我每次碰到地面时都会使用OnCollisionEnter()让他跳跃。我正在尝试调用一个动画,使角色武器在函数内部摆动,如下所示:

void OnCollisionEnter(碰撞碰撞){

    foreach(ContactPoint contact in collision.contacts){
        rigidbody.velocity = transform.up*10;
        audio.Play();
        animation.Play ("JumpAnimation");
    }
}

当我运行游戏时,我收到以下错误:

MissingComponentException:没有'动画'附在" Green Bot"游戏对象,但脚本正试图访问它。 您可能需要将动画添加到游戏对象" Green Bot"。或者您的脚本需要在使用之前检查组件是否已连接。

我有一个动画组件附在我的" Green Bot"如果我单击循环播放动画,但我只想让它在上面的功能中播放。如何在错误提示中检查组件是否附加到脚本中?

更新:

我已将代码设置为:

void OnCollisionEnter(碰撞碰撞){

    foreach(ContactPoint contact in collision.contacts){
        rigidbody.velocity = transform.up*10;
        audio.Play();
        animator.SetTrigger("Jump");
    }
}

这是我的Animator窗口的快照:

enter image description here

2 个答案:

答案 0 :(得分:1)

您是否考虑过在动画师中使用触发器,然后在OnCollisionEnter事件中调用动画师。SetTrigger(" YourTrigger")?在动画师中,您将创建上述触发参数(布尔值)并将动画与该动画绑定。

void OnCollisionEnter(Collision collision){

  foreach(ContactPoint contact in collision.contacts){
    rigidbody.velocity = transform.up*10;
    audio.Play();
    animator.SetTrigger("Jump");
  }
}

Animator Scripting上的Unity3D教程也可能是一个有用的参考,因为他们更详细地介绍了这个概念,包括如何正确配置动画师。

答案 1 :(得分:1)

如果要使用动画,除动画师外还应该有一个动画组件。然后在动画的“大小”部分播放,输入1并按Enter键。输入来了。选择你的动画,就是这样。

享受!