(C#)Unity2D - 动画打击我的角色运动?

时间:2017-03-31 04:33:28

标签: c# animation position unity2d

我想提前感谢你帮我解决这个问题。

我有一个由三部分组成的玩家: 身体 头部 和手臂

这三个都是个人精灵。

我将它们全部归入一个名为"播放器"

的空GameObject下

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

动画效果非常好!

但是,我还有一个脚本附加到"播放器"对象,此脚本称为" 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

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

如果你们能帮助我了解正在发生的事情以及如何纠正它,我将非常感激。

谢谢! :)

1 个答案:

答案 0 :(得分:0)

经过数小时的修补后解决了这个问题。

原来解决方案很简单:

我所要做的就是像这样构建我的玩家:

  • 播放器(空游戏对象)
    • PlayerAssembly(Body,Head和Arm的父级)
      • 身体部位(身体,头部,手臂)

然后将脚本,rigidBody2D和对撞机放在“播放器”上。

然后将动画师放在“PlayerAssembly”上。

Image of Hierarchy