(C#) Unity2D - 动画对抗我角色的运动?

(C#) Unity2D - Animation Fighting my Character's Movement?

在此先感谢您帮助我解决这个问题。

我有一个由三部分组成的播放器: body 头部 和手臂

这三个都是单独的精灵。

我已将它们全部归入一个我命名为 "Player"

的空游戏对象下

然后我在 "Player" GameObject 上添加了一个动画,它将 Y 位置从 0 更改为 0.022,然后从 0.022 变回0。 这创建了一个漂亮的小悬停动画,角色在其中上下弹跳。

动画效果非常好!

不过,我还有一个脚本附加到"Player"object,这个脚本叫做"PlayerController"。

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

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;
}

当我按住A或D时,角色拒绝移动。但是他确实翻转正确。

我个人认为我的动画是在和剧本作对,而且动画的优先级比剧本高...?

Here's a video of me explaining my issue

(不确定这个社区是否普遍接受视频。如果不接受,那么我深表歉意)

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

谢谢! :)

经过数小时的修改解决了问题。

事实证明解决方案很简单:

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

  • 玩家(空游戏对象)
    • PlayerAssembly(Body、头部和手臂的 parent)
      • Body 零件(Body,头部,手臂)

然后将脚本、rigidBody2D 和 collider 放在 "Player" 上。

然后把动画师放在"PlayerAssembly"上。