Unity翻转精灵

本文关键字:精灵 翻转 Unity | 更新日期: 2024-09-25 01:53:34

我对使用统一和C#真的很陌生,所以如果这是一个愚蠢的问题,请原谅,但我真的没能弄清楚。。

我只想在2D游戏中翻转我的精灵,但当我使用localScale时,精灵的位置也会改变。

它是这样的:

向右翻转:|[精灵向右]

向左翻转:[精灵向左]|

"|"符号在游戏中停留在一个位置。哇,没有图片很难描述,但我希望你能理解我。我不能发布图片,因为我是论坛的新手。

因此,问题是:当我改变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;
    }

}

Unity翻转精灵

确保精灵的原点配置正确。在大多数情况下,精灵的原点应该在中间,这会使负变换围绕中心翻转它。然而,如果原点在一个角落,则该位置在任何比例下都保持不变,这意味着它将在同一位置,并且您的精灵在翻转时看起来会移动。如果你的精灵只占据了精灵所用图像的一部分,也会发生这种情况——它实际上并没有移动,但由于你看不到图像的其余部分,所以看起来是。