@MistFolk

Рандомность физики Unity?

Когда нажимаю W персонаж прыгает, но каждый раз на разную высоту, как исправить?
void Update()
         {
             Jump();
         }
     
     private void Jump()
         {
             if (Input.GetKeyDown(KeyCode.W))
             {
                 
                 var jumpVel = new Vector2(0, jumpForce * Time.deltaTime);
                 rb.velocity += jumpVel;
                 
             }
         }
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 2
KraGenDeveloper
@KraGenDeveloper
Инди-разработчик.
В общем просто сделай так
void FixedUpdate()
         {
             Jump();
         }
     
     private void Jump()
         {
             if (Input.GetKeyDown(KeyCode.W))
             {
                 
                 var jumpVel = new Vector2(0, jumpForce);
                 rb.velocity += jumpVel;
                 
             }
         }
Ответ написан
Griboks
@Griboks Куратор тега Unity
1) Time.deltaTime имеет разное значение каждый раз.
2)
var jumpVel = new Vector2(0, jumpForce * Time.deltaTime);
- вы пытаетесь вместо силы добавить скорость.
3) rb.velocity += jumpVel; - вы добавляете скорость, поэтому сумма может равняться хоть нуля. Рекомендую задать скорость жёстко: rb.velocity = jumpVel;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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