#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, чтобы проверить, заземлены ли вы, если вы заземлены, вы можете прыгать, но если вы не касаетесь земли, вы не можете прыгать (поскольку вы не заземлены).