У меня есть 2D-персонаж, который может двигаться влево и вправо и прыгать. исходный спрайт персонажа расположен слева направо (голова в правильном направлении). когда персонаж движется назад, он поворачивает спрайт влево, но когда это происходит, коллайдер Box (зеленый прямоугольник), отвечающий за столкновения, смещается относительно персонажа. Мне нужно, чтобы при переворачивании спрайта он оставался на том же месте, не выходя из коллайдера Box. Как это исправить? Примечание. Я использую свойство SpriteRenderer.flipX, чтобы перевернуть спрайт.
(обратите внимание, что зеленый прямоугольник, коллайдер, немного смещен относительно спрайта)
Я уже пробовал умножить transform.localScale.x на -1, но это создало еще одну проблему.





На мой взгляд, видимое содержимое исходного изображения неправильно центрировано внутри прозрачной области, поэтому я бы посоветовал сначала проверить это.
Я воспроизвел проблему в Годо, чтобы лучше понять, о чем я говорю.



Вам придется либо изменить само изображение, либо попробовать настроить поворот, как уже упоминал @hijinxbassist в разделе комментариев. Второй вариант мне не подошел.
Чтобы решить эту проблему, вам нужно настроить точку поворота вашего спрайта. Точка поворота — это точка, вокруг которой спрайт вращается или переворачивается.
Вот как это сделать:
Теперь, когда вы переворачиваете спрайт с помощью SpriteRenderer.flipX, спрайт должен переворачиваться вокруг точки поворота, а Box Collider должен оставаться на одной линии со спрайтом.
Кроме того, вы также можете настроить точку поворота программно, установив свойство SpriteRenderer.pivot. Однако использование редактора спрайтов — более наглядный и интуитивно понятный подход.
Что касается умножения transform.localScale.x на -1, то в данном случае это не рекомендуемый подход, поскольку это может вызвать другие проблемы с вращением и позиционированием вашего спрайта.
это сработало. На самом деле мой спрайт — это анимация, поэтому мне нужно переместить точку поворота для всех кадров. Есть ли более простой способ отредактировать опорную точку для всех изображений?
Переместите ось в центр прямоугольной части тела. Центр, скорее всего, центрирован по всему спрайту, а не по центру прямоугольной части тела. Сравните, где находится центр бокс-коллайдера и точка поворота спрайта.