我正在制造一把'摆动'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不在这里,因为那是默认的。
因为,动画已经旋转了剑,所以它会“覆盖”我做的任何事情。这至少是我的理论。
答案 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中进行的任何旋转都不会被覆盖。