Поворот в направлении движения после отражения игрока с помощью масштаба.C#

Место общения программистов C#
Anonymous
Поворот в направлении движения после отражения игрока с помощью масштаба.

Сообщение Anonymous »

Я написал метод, который отражает игрока, используя его Transform.localScale:

Код: Выделить всё

void Flip()
{
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
Затем в обновлении я написал код, который поворачивает спрайт в направлении движения:

Код: Выделить всё

if (facingRight)
{
float angle = Mathf.Atan2(movement.y, movement.x) * Mathf.Rad2Deg;
float angleClamp = Mathf.Clamp(angle , -30.0f, 30.0f);
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, angleClamp), rotateSpeed * Time.deltaTime);
}
else
{
Quaternion.Euler(0, 0, 0);
float angle = Mathf.Atan2(movement.y * -1, movement.x) * Mathf.Rad2Deg;
float angleClamp = Mathf.Clamp(angle, -30.0f, 30.0f);
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, angleClamp), rotateSpeed * Time.deltaTime);
}
Вектор движения — это ввод текущего игрока, полученный с помощью GetAxis():

Код: Выделить всё

float moveX = Input.GetAxis("Horizontal");
float moveY = Input.GetAxis("Vertical");
Vector2 movement = new Vector2(moveX, moveY);
Когда FaceRight == true, угол правильный; (когда я двигаюсь прямо на 0 градусов, полностью вверх и вниз, это 90 и -90, а по диагонали около 45 и -45)
Но когда лицом вправо == false, угол неправильный (когда я двигаюсь прямо -180 градусов, полностью вверх и вниз - это 90 и -90, а по диагонали около 135 и -135)
Как мне получить одинаковые значения как по углам при повороте направо, но при этом они должны быть противоположными? (в этом коде я делаю их противоположными, умножая motion.y на -1)

Подробнее здесь: https://stackoverflow.com/questions/787 ... sing-scale

Вернуться в «C#»