如何使用新的 Unity4.3 2D 框架正确翻转 2D 角色? (动画期间游戏对象的旋转)

Posted

技术标签:

【中文标题】如何使用新的 Unity4.3 2D 框架正确翻转 2D 角色? (动画期间游戏对象的旋转)【英文标题】:How to properly flip 2D character with new Unity4.3 2D framework? (Rotation of gameobjects during animation) 【发布时间】:2013-11-23 10:47:29 【问题描述】:

我已经检查了官方 Unity 4.3 示例项目,他们在那里使用

Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;

这很好用,但是。但我遇到了麻烦,不确定这个 Flip 或其他东西的问题。

我正在使用Animator为我的角色制作动画,我有Attack动画,除了精灵动画还移动角色的Hand,可以携带Weapon。问题是当我将角色翻转到相反方向时Hand 会移动错误(不是按计划),这是错误的。 (video below will be more descriptive)

我发现只有当我在动画中修改Handrotation 时才会出现这个问题,所以如果我只使用.position 这很好用,但我需要rotation

完成这项工作的最佳方法是什么?

这里是 youtube 视频: http://youtu.be/qpMK2gRgDz8

在视频中,我展示了不使用旋转的动画,手部动作正确。但是接下来我用旋转来展示它,正如你看到的那样,当角色向右转时效果很好,但是当向左时,它就完全错误了。

【问题讨论】:

【参考方案1】:

你想做的事情不能用缩放来完成,因为缩放不会改变对象的旋转,所以前向向量保持不变。您必须创建双面对象并将它们旋转 180 度,或者您可以使用绘制多边形的着色器,即使它的法线向量对着相机也是如此。

【讨论】:

以上是关于如何使用新的 Unity4.3 2D 框架正确翻转 2D 角色? (动画期间游戏对象的旋转)的主要内容,如果未能解决你的问题,请参考以下文章

Unity4.3不是自带2D骨骼动画编辑器么

使用 Graphics2D 翻转图像

OpenGL 2D纹理单元&纹理翻转解决策略

当角色面向左右时翻转 2D 子弹精灵

使用ScaleAnimation实现2D翻转

Metal渲染:实现旋转/翻转功能