已经使用动画旋转时旋转?
Rotate when already using an animation to rotate?
问题
我正在制造一把 'swings' 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 不在此处,因为这是默认设置。
为什么不能只旋转它?
因为动画已经旋转了剑,所以 'overwrites' 无论我做什么。至少这是我的理论。
问题的视频示例
我会创建一个动画文件,很确定这就是您已有的。然后将它作为其他 GameObject 的父级。在代码中更改父游戏对象的方向。
if(方向 == 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));
将子对象添加到 Weapon_Swing 变换,并在子对象中生成剑。这应该确保您可以独立于动画设置剑的 localRotation。
对于那些在未来寻找简单解决方案的人来说,LateUpdate 似乎在应用动画后被调用,因此在 LateUpdate 中完成的任何旋转都不会被覆盖。
问题
我正在制造一把 'swings' 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 不在此处,因为这是默认设置。
为什么不能只旋转它?
因为动画已经旋转了剑,所以 'overwrites' 无论我做什么。至少这是我的理论。
问题的视频示例
我会创建一个动画文件,很确定这就是您已有的。然后将它作为其他 GameObject 的父级。在代码中更改父游戏对象的方向。
if(方向 == 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));
将子对象添加到 Weapon_Swing 变换,并在子对象中生成剑。这应该确保您可以独立于动画设置剑的 localRotation。
对于那些在未来寻找简单解决方案的人来说,LateUpdate 似乎在应用动画后被调用,因此在 LateUpdate 中完成的任何旋转都不会被覆盖。