(C#)Unity2D-与我的角色战斗的动画';什么运动?

(C#)Unity2D-与我的角色战斗的动画';什么运动?,c#,animation,position,unity2d,C#,Animation,Position,Unity2d,我想提前感谢你在这个问题上对我的帮助 我有一个由三部分组成的播放器: 身体 头部 手臂呢 这三个都是单独的精灵 我把它们都放在一个空的游戏对象下,我把它命名为“玩家” 然后,我在“玩家”游戏对象上添加了一个动画,将Y位置从0更改为0.022,然后从0.022更改为0。 这将创建一个漂亮的小悬停动画,角色在其中上下弹跳 动画效果非常好 但是,我还有一个脚本附加到“Player”对象,这个脚本称为“PlayerController” 在PlayerController中,如果玩家按住A(表示向左移动

我想提前感谢你在这个问题上对我的帮助

我有一个由三部分组成的播放器: 身体 头部 手臂呢

这三个都是单独的精灵

我把它们都放在一个空的游戏对象下,我把它命名为“玩家”

然后,我在“玩家”游戏对象上添加了一个动画,将Y位置从0更改为0.022,然后从0.022更改为0。 这将创建一个漂亮的小悬停动画,角色在其中上下弹跳

动画效果非常好

但是,我还有一个脚本附加到“Player”对象,这个脚本称为“PlayerController”

在PlayerController中,如果玩家按住A(表示向左移动)或D(表示向右移动),我会更改玩家的x位置

当我按住A或D时,角色拒绝移动。然而,他确实正确地翻转了

我个人认为我的动画是在与脚本战斗,而且动画比脚本具有更高的优先级

(不确定该社区是否普遍接受视频。如果不接受,我道歉)

如果你们能帮助我了解发生了什么,以及如何纠正,我将非常感激


谢谢!:)

经过几个小时的修补,问题终于解决了

结果证明解决方案很简单:

我所要做的就是这样构造我的播放器:

  • 玩家(空游戏对象)
    • PlayerAssembly(身体、头部和手臂的父对象)
      • 身体部位(身体、头部、手臂)
然后将脚本rigidBody2D和collider放在“Player”上

然后将动画师设置为“播放装配”

protected bool facingRight = true;
float xPos = 0;

void Update()
{
    if (Input.GetKey(KeyCode.D))
    {
        xPos += 0.01f;
        if (!facingRight)
        {
            Flip();
        }
    }
    else if (Input.GetKey(KeyCode.A))
    {
        xPos -= 0.01f;

        if (facingRight)
        {
            Flip();
        }
    }

    gameObject.transform.position = new Vector2(xPos, transform.position.y);

}

protected void Flip()
{
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
}