Как ограничить количество нажатий кнопки в Unity C#

#c# #unity3d

#c# #unity3d

Вопрос:

Я создаю игру FPS, и когда я добавлял физику прыжков, я столкнулся с проблемой. Каждый раз, когда я нажимал пробел, высота прыжка игрока увеличивалась. Я хочу, чтобы количество нажатий пробела, когда игрок находится на земле, ограничивалось 1. Это код, который я написал:-

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
public CharacterController controller;
public float moveSpeed;
Vector3 velocity;
public float gravity;
public Transform groundCheck;
public LayerMask groundMask;
public float groundDistance = 0.2f;
bool isGrounded;
public float jumpHeight;
public float jumpButtonPressedNum = Input.GetButtonDown("Jump");

void Update()
{
    isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

    if (isGrounded amp;amp; velocity.y < 0 )
    {
        velocity.y = 0f;
    }

    float x = Input.GetAxis("Horizontal");
    float z = Input.GetAxis("Vertical");

    Vector3 move = transform.right * x   transform.forward * z;

    controller.Move(move * moveSpeed * Time.deltaTime);

    velocity.y  = gravity * Time.deltaTime;
    controller.Move(velocity * Time.deltaTime);

    if (Input.GetButtonDown("Jump") == 1)
    {
        velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
    }
}
  

}

Ответ №1:

Вам нужно проверить, находится ли ваш проигрыватель на земле или нет.

 if (isGrounded amp;amp; Input.GetButtonDown("Jump") == 1)
{
    velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
}
  

Ответ №2:

Я допустил эту ошибку раньше — вам нужно использовать isGrounded созданный вами bool, чтобы проверить, заземлены ли вы, если вы заземлены, вы можете прыгать, но если вы не касаетесь земли, вы не можете прыгать (поскольку вы не заземлены).