统一翻转精灵
Unity flipping a sprite
我对使用 unity 和 C# 很陌生,如果这是一个愚蠢的问题,请原谅我,但我真的无法弄清楚..
我只想在我的 2D 游戏中翻转我的 sprite,但是当我使用 localScale 这样做时,sprite 的位置也会改变。
是这样的:
向右翻转:
| [精灵面向右]
向左翻转:
[精灵面向左] |
“|”标志留在游戏中的一个位置。哇,没有图片很难描述,但我希望你能理解我。我不能 post 图片,因为我是论坛的新手。
所以问题是:
当我更改 localScale 时,整个精灵都会移动,但我不明白为什么。
有人可以帮我吗?提前致谢!
我的代码:
private void HandleInput()
{
if (Input.GetKey(KeyCode.D))
{
_normalizedHorizontalSpeed = 1;
if (!_isFacingRight)
Flip();
}
else if (Input.GetKey(KeyCode.A))
{
_normalizedHorizontalSpeed = -1;
if (_isFacingRight)
Flip();
}
else
{
_normalizedHorizontalSpeed = 0;
}
if(_controller.CanJump && Input.GetKeyDown(KeyCode.Space))
{
_controller.Jump();
}
}
private void Flip()
{
transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
_isFacingRight = transform.localScale.x > 0;
}
}
确保精灵的原点配置正确。在大多数情况下,精灵的原点应该在最中间,这会使负变换围绕中心翻转它。但是,如果原点位于角落,则该位置在任何比例下都保持不变,这意味着它将位于同一位置,并且您的精灵在翻转时看起来会移动。如果您的 sprite 仅占据用于 sprite 的图像的一部分,也会发生这种情况 - 它实际上并没有移动,但由于您看不到图像的其余部分,它似乎是。
我对使用 unity 和 C# 很陌生,如果这是一个愚蠢的问题,请原谅我,但我真的无法弄清楚..
我只想在我的 2D 游戏中翻转我的 sprite,但是当我使用 localScale 这样做时,sprite 的位置也会改变。
是这样的:
向右翻转: | [精灵面向右]
向左翻转: [精灵面向左] |
“|”标志留在游戏中的一个位置。哇,没有图片很难描述,但我希望你能理解我。我不能 post 图片,因为我是论坛的新手。
所以问题是: 当我更改 localScale 时,整个精灵都会移动,但我不明白为什么。 有人可以帮我吗?提前致谢!
我的代码:
private void HandleInput()
{
if (Input.GetKey(KeyCode.D))
{
_normalizedHorizontalSpeed = 1;
if (!_isFacingRight)
Flip();
}
else if (Input.GetKey(KeyCode.A))
{
_normalizedHorizontalSpeed = -1;
if (_isFacingRight)
Flip();
}
else
{
_normalizedHorizontalSpeed = 0;
}
if(_controller.CanJump && Input.GetKeyDown(KeyCode.Space))
{
_controller.Jump();
}
}
private void Flip()
{
transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
_isFacingRight = transform.localScale.x > 0;
}
}
确保精灵的原点配置正确。在大多数情况下,精灵的原点应该在最中间,这会使负变换围绕中心翻转它。但是,如果原点位于角落,则该位置在任何比例下都保持不变,这意味着它将位于同一位置,并且您的精灵在翻转时看起来会移动。如果您的 sprite 仅占据用于 sprite 的图像的一部分,也会发生这种情况 - 它实际上并没有移动,但由于您看不到图像的其余部分,它似乎是。