Animation 是否在已使用动画进行旋转时进行旋转? 问题

Animation 是否在已使用动画进行旋转时进行旋转? 问题,animation,unity3d,rotation,Animation,Unity3d,Rotation,我正在创造一把可以“摆动”90度的剑。 这是使用Unity动画完成的: 当玩家攻击时,就会产生这样一把剑。根据玩家的方向,剑将在X轴或Y轴上镜像。 但当玩家向左边进攻时,他会从底部向上进攻,而不是从对面 代码 下面是我用来决定我们应该以何种方式镜像剑的代码: void changeDirection() { print(Direction); if(Direction == Entity.direction.RIGHT) gameObject.transform

我正在创造一把可以“摆动”90度的剑。 这是使用Unity动画完成的:

当玩家攻击时,就会产生这样一把剑。根据玩家的方向,剑将在X轴或Y轴上镜像。 但当玩家向左边进攻时,他会从底部向上进攻,而不是从对面

代码 下面是我用来决定我们应该以何种方式镜像剑的代码:

void changeDirection()
{
    print(Direction);
    if(Direction == Entity.direction.RIGHT)
        gameObject.transform.localScale = new Vector3(-1, 1, 1);
    if (Direction == Entity.direction.LEFT)
    {
        gameObject.transform.localScale = new Vector3(1, -1, 1);
    }
    if (Direction == Entity.direction.DOWN)
        gameObject.transform.localScale = new Vector3(-1, -1, 1);
}
Up不在这里,因为这是默认设置

你为什么不能旋转它? 因为,动画已经旋转了剑,所以它“覆盖”了我所做的一切。至少这是我的理论

问题的视频示例

我会创建一个动画文件,非常确定这就是您已经拥有的。然后将其设置为其他游戏对象的父对象。更改代码中父游戏对象的方向

if(Direction==Entity.Direction.RIGHT)


将子对象添加到武器_Swing变换,并在子对象中生成剑。这将确保您可以独立于动画设置剑的本地旋转。

对于那些未来希望找到简单解决方案的人,在应用动画后,LateUpdate似乎会被调用,因此在LateUpdate中完成的任何旋转都不会被覆盖。

这不起作用。首先,为什么要旋转X轴或Y轴?我们需要旋转Z轴。第二,你不能像我在问题中提到的那样使用旋转,旋转被动画“覆盖”。
gameObject.transform.localRotation = Quaternion.Euler(new Vector3(90, 0, 1));
if (Direction == Entity.direction.LEFT)
{
     gameObject.transform.localRotation = Quaternion.Euler(new Vector3(0, 90, 1));
}
if (Direction == Entity.direction.DOWN)
     gameObject.transform.localRotation = Quaternion.Euler(new Vector3(90, 0, 1));