Странное поведение от перевернутого масштаба - PullRequest
0 голосов
/ 10 апреля 2020

В настоящее время я работаю над 2D-игрой со спрайтами и подобными вещами.

Когда я попытался перевернуть спрайт с помощью кода, я нашел что-то действительно странное, вот код:

Vector3 theScale = transform.localScale;
theScale.x = isMovingLeft ? 1 : -1;
transform.localScale = theScale;

// Same code but in one line
//transform.localScale = Vector3.right * (isMovingLeft ? 1 : -1);

Обычно, когда спрайт достигает конца списка путевых точек, он просто переворачивается в противоположном направлении.

Но если я использую одну строку, прокомментированную в коде над спрайтом, он просто исчезает (но продолжаю перевернуть в инспекторе нормально), и если я использую три строки кода (с локальной переменной), спрайт работает отлично.

Может кто-нибудь знать, почему это происходит? Это ошибка или ссылка / значение?

Спасибо:)

1 Ответ

3 голосов
/ 10 апреля 2020

Vector3.right будет 0,0,1. Таким образом, только одно измерение будет фактически иметь размер (так как остальное умножается на 0). Это как бы «сдавливается» ни к чему.

В вашем текущем незакомментированном коде вы фактически используете localScale. Я предполагаю, что свойства .y и .z будут отличны от нуля. Поэтому вы все равно увидите его, когда инвертируете свойство .x.

...