@Dikkoo

Поворот персонажа в сторону движения Unity?

Вопрос в том что я написал код поворота персонажа он работает, но работает криво. Персонаж должен делать поворот на месте, а он поворачивается на расстоянии. Код ниже

public class Player : MonoBehaviour
{
    public float speed;
    private Rigidbody2D rb;
    private Vector2 moveInput;
    private Vector2 moveVelocity;
    public Joystick joystick;
    private Animator anim;
    private bool facingRight = true;





    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();

    }

  
    void Update()
    {
    
        
        moveInput = new Vector2(joystick.Horizontal,joystick.Vertical);
        moveVelocity = moveInput.normalized * speed;

          if (moveInput.x == 0)
          {
              anim.SetBool("isRunning",false);

          }
          else
          {
              anim.SetBool("isRunning", true);
          }
          if(!facingRight && moveInput.x > 0)
          {
              Flip();
          }
          else if (facingRight && moveInput.x < 0)
          {
              Flip() ;
          }
      
      

    }

    void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);

    }

    private void Flip()
    {
        facingRight = !facingRight;
        Vector3 Scaler = transform.localScale;
        Scaler.x *= -1;
        transform.localScale = Scaler;


    }
}
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 2
CHIDWI
@CHIDWI
Изучаю C#, Unity3D
А почему бы поворот влево/вправо не засунуть туда где непосредственно происходит чтение инпутов? Просто когда нажал кнопку влево transform.localscale.x =-1; а вправо наоборот соответственно
Ответ написан
Возможно, центр вашего объекта (pivot) находится где-то в другом месте.
60377ea30de4c402677149.png

Cверху выберите pivot.
Синей линией я показал, где находится Pivot. Он должен быть в центре (по горизонтали) картинки.
Поворот происходит относительно этого pivot-а.

Ещё можете поворот делать не через localScale, а через поворот относительно оси Y. Так, даже будет логичнее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы