Задать вопрос

Из за Time.deltatime расстояние передвижения игрока не контролируемое, что делать?

Всем привет! Делаю игру и мне нужно что бы персонаж ровно передвигался по сетке , я сделал следующий код
public float Speed;

    private Rigidbody2D _rigibody2D;


    void Start()
    {
        _rigibody2D = GetComponent<Rigidbody2D>();
    }

    
    void FixedUpdate()
    {
        if (Input.GetKeyDown(KeyCode.S)) {  
            transform.Translate(new Vector2(0.0f , -Speed * Time.deltaTime));
        }
    }

После нажатия кнопки S персонаж двигается на расстояние указанное в Speed , ну и все работает , но вот только он делает это очень резко ну и я добавил Time.deltaTime , после чего персонаж начал передвигаться плавно , но расстояние
изменяется , например : 0.245 или 0.753 ( это после вычитания числа из Speed , ( числа выдуманы 0.245 и 0.753 )) , а мне надо чтобы персонаж передвигался по равному расстоянию , сделав вместо Update , FixedUpdate проблема исчезла , но при этом т.к. FixedUpdate работает по определенным моментам (не как Update) после передвижения , чтобы снова двинуться нужно подождать примерно 1 секунду перед тем как снова двинуться , мне бы хотелось чтобы не было этой задержки , но из за Update снова появляется старая проблема . Что можно сделать чтобы решить мою проблему?
  • Вопрос задан
  • 38 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Не используйте Input в FixedUpdate читайте документацию.
Ответ написан
Ваш ответ на вопрос

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

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