Код: Выделить всё
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);
}
Код: Выделить всё
float moveX = Input.GetAxis("Horizontal");
float moveY = Input.GetAxis("Vertical");
Vector2 movement = new Vector2(moveX, moveY);
Но когда лицом вправо == false, угол неправильный (когда я двигаюсь прямо -180 градусов, полностью вверх и вниз - это 90 и -90, а по диагонали около 135 и -135)
Как мне получить одинаковые значения как по углам при повороте направо, но при этом они должны быть противоположными? (в этом коде я делаю их противоположными, умножая motion.y на -1)
Подробнее здесь: https://stackoverflow.com/questions/787 ... sing-scale