已经使用动画旋转时旋转?

时间:2015-02-10 13:46:22

标签: animation unity3d rotation

问题

我正在制造一把'摆动'90度的剑。 这是使用Unity动画完成的: enter image description here

当玩家攻击时,会产生这样的剑。根据玩家的方向,剑将在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不在这里,因为那是默认的。

为什么你不能只旋转它?

因为,动画已经旋转了剑,所以它会“覆盖”我做的任何事情。这至少是我的理论。

问题的视频示例

http://a.pomf.se/vgxumj.webm

4 个答案:

答案 0 :(得分:0)

我会创建一个动画文件,非常确定你已经拥有的。然后将其父级给其他GameObject。在代码中更改父游戏对象的方向。

答案 1 :(得分:0)

if(Direction == Entity.direction.RIGHT)

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

答案 2 :(得分:0)

将一个子对象添加到Weapon_Swing变换中,并在子对象中生成剑。这应该确保您可以独立于动画设置剑的localRotation。

答案 3 :(得分:0)

对于将来寻求简单解决方案的用户,应用动画后似乎会调用LateUpdate,因此在LateUpdate中进行的任何旋转都不会被覆盖。