@Gruntek

Персонаж в игре перемещается вправо от указанной точки. Что делать?

5f806e546e875087941545.png
это что есть первоначально.
5f806e6e009ef544452009.png
это то, что становиться.
Я сам новичок, поэтому если глупый вопрос не бейте.

Вообще я пытался сделать флип, но когда я поворачивал в лево, то персонаж тоже поворачивал и отскакивал на несколько клеток .
Скрипт:
public ControlTipe controlTipe;
    public Joystick joystick;
    public float speed;
    public Animator anim;
    public enum ControlTipe {PC,Android}
    private Rigidbody2D rb;
    private Vector2 moveInput;
    private Vector2 moveVelocity;
    private bool facingRight = true;

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

    void Start()
    {
        if (controlTipe == ControlTipe.PC)
        {
            joystick.gameObject.SetActive(false);
        }
    }
    
    void Update()
    {
        if (controlTipe == ControlTipe.PC)
            moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
        if (controlTipe == ControlTipe.Android)
            moveInput = new Vector2(joystick.Horizontal, joystick.Vertical);
        moveVelocity = moveInput.normalized * speed;
        if (moveInput.x == 0)
        {
            anim.SetBool("isRuning", false);
        }
        else
        {
            anim.SetBool("isRuning", true);
        }

        if (!facingRight && moveInput.x > 0)
                Flip();
        if (facingRight && moveInput.x < 0)
                Flip();
    }

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

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

    }
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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