@raftaliyalu

Не работает движение, как исправить?

Игрок не двигается. Ошибки не выдаёт.

Вот мой код:
public float speed;

    private Rigidbody2D rb;
    private Vector2 moveInput;
    private Vector2 moveVelocity;
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical") );
        moveVelocity = moveInput.normalized * speed;
    }


    void Fix()
    {
        rb.MovePosition(rb.position + moveVelocity + moveInput);
    }

Возможно проблемы из-за Input.GetAxisRaw
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@pashara
Не отрабатывает логика метода Fix().
Вызывать его нужно в FixedUpdate().
К тому же, в
rb.MovePosition(rb.position + moveVelocity + moveInput);

написано непонятно что.
Нужно к позиции добавлять смещение за цикл апдейта (fixedDeltaTime, в данном случае).
moveVelocity уже учитывает направление инпута (член moveInput yt ljk;ty exbnsdfnmcz d ldb;tybb e;t)
rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы