Top.Mail.Ru
Ответы

Как сделать что бы персонаж прыгал лишь 1 раз в юнити

При нажатии пробела персонаж подпрыгивает, но если во время полета нажать еще раз пробел то он подпрыгнет выше и так пока жмем пробел. Как сделать чтобы персонаж прыгал один раз ?

12345678910111213141516171819202122232425262728293031323334353637383940
 using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
 
public class PlayerMove : MonoBehaviour 
{ 
    public CharacterController controller; 
    public Transform groundCheck; 
    public LayerMask groundMask; 
    public float gravity = -9.8f; 
    public float JumpHeight = 3f; 
    public float groundDistance = 0.4f; 
    public float speed = 10f; 
    Vector3 velocity; 
 
    bool isGrounded; 
 
    void Update() 
    { 
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance); 
        if (isGrounded && velocity.y < 0) { 
            velocity.y = -2f; 
        } 
 
        float x = Input.GetAxis("Horizontal"); 
        float z = Input.GetAxis("Vertical"); 
 
        if(Input.GetButtonDown("Jump") && isGrounded)  
        { 
            velocity.y = Mathf.Sqrt(JumpHeight * -2f * gravity); 
        } 
 
        Vector3 move = transform.right * x + transform.forward * z; 
        controller.Move(move * speed * Time.deltaTime); 
 
        velocity.y += gravity * Time.deltaTime; 
        controller.Move(velocity * Time.deltaTime); 
    } 
} 
 
По дате
По рейтингу
Аватар пользователя
Ученик

Добавьте проверку соприкосновения с землей

Аватар пользователя
Ученик

я добавил но не уверен что правильно сделал

123456789101112131415
     private void OnCollisionEnter(Collision collision) 
    { 
        if (collision.gameObject.tag == "isGrounded") 
        { 
            isGrounded = true; 
        } 
    } 
 
    private void OnCollisionExit(Collision collision) 
    { 
        if (collision.gameObject.tag == "isGrounded") 
        { 
            isGrounded = false; 
        } 
    } 
Аватар пользователя
Ученик

перестал прыгать



Видео по теме