Как использовать новую систему ввода Unity, как применить высоту прыжка в зависимости от того, как долго нажата кнопка пC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать новую систему ввода Unity, как применить высоту прыжка в зависимости от того, как долго нажата кнопка п

Сообщение Anonymous »


Я работаю с новой системой ввода, и сейчас у меня есть простой код для прыжка:

void OnJump (кнопка InputValue) { isGrounded = groundCheck.IsTouchingLayers(LayerMask.GetMask("Ground")); если (button.isPressed && isGrounded) { rb.velocity += новый Vector2 (0f, jumpForce); } } Это работает, но очень жестко: каждый раз при нажатии кнопки происходит прыжок на одну и ту же высоту.

Что я могу сделать, чтобы игрок подпрыгивал на высоту в зависимости от того, как долго была нажата кнопка?

Для примера рассмотрим весь контроллер игрока:

с использованием System.Collections; использование UnityEngine; использование UnityEngine.InputSystem; открытый класс PlayerController: MonoBehaviour { [SerializeField] float moveSpeed ​​= 10f; [SerializeField] float jumpForce = 15f; [SerializeField] Rigidbody2D rb; [SerializeField] Collider2D groundCheck; Вектор2 moveInput; bool isMoving; bool isGrounded; недействительное обновление() { Бегать(); Подбросить(); } void OnMove (значение InputValue) { moveInput = value.Get(); } void OnJump (кнопка InputValue) { isGrounded = groundCheck.IsTouchingLayers(LayerMask.GetMask("Ground")); если (button.isPressed && isGrounded) { rb.velocity += новый Vector2 (0f, jumpForce); } } недействительный запуск() { Vector2 runVelocity = новый Vector2(moveInput.x * moveSpeed, rb.velocity.y); rb.velocity = runVelocity; } недействительный Флип() { isMoving = Mathf.Abs(rb.velocity.x) > Mathf.Epsilon; если (isMoving) { Transform.localScale = новый Vector2(Mathf.Sign(rb.velocity.x), 1f); } } } Я новичок, поэтому все, что я пробовал, возможно, было реализовано неправильно.

Я прочитал руководство Unity по физике твердого тела и попробовал вместо использования нового Vector2 для определения скорости использовать AddForce. Я не уверен, что применил это правильно.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»