首页 文章

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

提问于
浏览
0

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

void OnCollisionEnter(碰撞碰撞){

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

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

MissingComponentException: There is no 'Animation' attached to the "Green Bot" game object, but a script is trying to access it. You probably need to add a Animation to the game object "Green Bot". Or your script needs to check if the component is attached before using it.

我有一个动画组件连接到我的“绿色机器人”,如果我点击循环播放动画,但我只想让它在上面的功能中播放 . 如何在错误提示中检查组件是否附加到脚本中?

更新:

我已将代码设置为:

void OnCollisionEnter(碰撞碰撞){

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

这是我的Animator窗口的快照:

enter image description here

2 回答

  • 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并按Enter键 . 输入来了 . 选择你的动画就是这样 .

    请享用!

相关问题