Проблема по всей видимости в анимации, потому что размер правильно изменяется для поворота но поворот странный
А в чем именно проблема-то? Из видео не понял.
Как должно быть?
Что в коде, что в анимации?
Я хочу чтоб он бегал как в начале ролика, смотря влево бежать влево , смотря вправо бежать вправо
Есть две Анимации
- Idle - просто закинул в окно Animation 1 спрайт спокойного состояния
- Run - просто закинул в окно Animation 3 спрайта
Код поворота влево-вправо
if (facingRight == true && MoveInput > 0)
{
FlipX();
}
else if (facingRight == false && MoveInput < 0)
{
FlipX();
}
FlipX()
void FlipX()
{
facingRight = !facingRight;
Vector3 Scaler = transform.localScale;
Scaler.x *= -1;
transform.localScale = Scaler;
}
Код поворота вверх-вниз
if (rb2.gravityScale == 2 && Input.GetMouseButtonDown(0))
{
rb2.gravityScale = -2;
}
else if (rb2.gravityScale == -2 && Input.GetMouseButtonDown(0))
{
rb2.gravityScale = 2;
}
Хотя дело не в анимации. Я проверил с помощью обычных спрайтов квадрата, таже проблема, но не понимаю в чём проблема
А MoveInput
откуда?
float MoveInput;
для движения
MoveInput = Input.GetAxis("Horizontal");
rb2.velocity = new Vector2(MoveInput * Speed, rb2.velocity.y);
так же на видео видно переворот вверх ногами может в нём что то не то
if (transform.position.y >= 0)
{
Quaternion Rotate = transform.localRotation;
Rotate.x = 180;
transform.localRotation = Rotate;
}
else if (transform.position.y <= 0)
{
Quaternion Rotate = transform.localRotation;
Rotate.x = 0;
transform.localRotation = Rotate;
}
но по сути он вроде не влияет на проблему которая возникла
исправил.
Почему то когда он приземлялся у него Rotation.y изменялся на 180
решил так
if (transform.position.y >= 0)
{
Quaternion Rotate = transform.localRotation;
Rotate.x = 180;
transform.localRotation = Rotate;
}
else if (transform.position.y <= 0)
{
Quaternion Rotate = transform.localRotation;
Rotate.x = 0;
Rotate.y = 0;
transform.localRotation = Rotate;
}