🔄 Unity角色翻转问题解析与解决方案
🎬 问题背景
在开发2D游戏Demo时遇到角色动画方向问题:
- 已完成角色的
Run Clip
动画制作 - 动画仅支持单一方向播放(通常为朝右)
- 需要在不制作反向精灵的前提下实现左右双向动画
💻 原始解决方案代码
if (xInput != 0)
{
// 播放跑步动画
anim.SetBool("IsRun", true);
// 方向判断逻辑
if (xInput > 0 && !isRight)
{
isRight = true;
playerSprite.flipX = false; // 取消翻转
}
else if (xInput < 0 && isRight)
{
isRight = false;
playerSprite.flipX = true; // 水平翻转
}
}
else
{
anim.SetBool("IsRun", false); // 停止动画
}
🔍 代码逻辑解析
条件判断 | 执行动作 | 效果 |
---|---|---|
xInput > 0 && !isRight |
isRight = true flipX = false |
角色转向右侧 |
xInput < 0 && isRight |
isRight = false flipX = true |
角色转向左侧 |
其他情况 | 无操作 | 保持当前状态 |
💡 核心困惑解答
[!NOTE] 为什么输入方向与当前朝向不同时没有翻转?
关键在于对
playerSprite.flipX
属性的误解:
flipX = false
➔ 不进行翻转,显示精灵原始状态(初始朝右)
flipX = true
➔ 水平镜像翻转,显示朝左状态逻辑设计原理:
只有当角色需要改变朝向时才执行翻转操作:
当前朝左(
!isRight
)但输入向右(xInput>0
) → 需要转向右当前朝右(
isRight
)但输入向左(xInput<0
) → 需要转向左其他情况(如同向移动)无需翻转,避免重复操作!
🧩 flipX属性详解
属性值 | 效果 | 视觉表现 | 适用场景 |
---|---|---|---|
false |
原始状态 | 精灵正常显示 | 默认朝右方向 |
true |
水平镜像 | 精灵左右翻转 | 朝左方向 |