Исправить прыжки в воздухе (Unity2D) - PullRequest
0 голосов
/ 16 июня 2020

Я делаю свою первую игру, и теперь у меня проблема: у меня появляется кнопка прыжка, когда я ее нажимаю, я прыгаю, но когда я в воздухе, я могу нажать ее еще раз и снова прыгнуть в воздух. Как это исправить, я могу прыгать только по земле. Вот мой код:

using UnityEngine;
using System.Collections;
using UnityStandardAssets.CrossPlatformInput;
public class Move2D : MonoBehaviour
{

    public float speed = 5f;
    public float jumpSpeed = 8f;
    private float movement = 0f;
    private Rigidbody2D rigidBody;

    // Use this for initialization
    void Start()
    {
        rigidBody = GetComponent<Rigidbody2D>();


    }

    public void Jump()
    {

        rigidBody.AddForce(transform.up * jumpSpeed, ForceMode2D.Impulse);
    }

    // Update is called once per frame

}

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Вот код

public class Move2D : MonoBehaviour
{
    public bool isGrounded = false;
    public float speed = 5f;
    public float jumpSpeed = 8f;
    private float movement = 0f;
    private Rigidbody2D rigidBody;

    // Use this for initialization
    void Start()
    {
        rigidBody = GetComponent<Rigidbody2D>();


    }

    private void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.tag == "Ground") //you need to add a tag to your Ground, like "Ground"
        {
            isGrounded = true;
        }
    }
    public void Jump()
    {

        rigidBody.AddForce(transform.up * jumpSpeed, ForceMode2D.Impulse);
        isGrounded = false;
    }
     void Update()
    {
        if (Input.GetButtonDown("Jump") && isGrounded == true)
        {
            isGrounded = false;
            Jump();
        }
    }
}
0 голосов
/ 16 июня 2020

прежде всего вам нужно логическое значение (isGounded). Затем вы должны проверить столкновение между игроком и землей с помощью

private void OnCollisionEnter2D(Collision2D other)
{
    if(other.gameObject.tag == "Ground") //you need to add a tag to your Ground, like "Ground"
    {
       isGrounded = true;
    }
}

А затем в методе обновления добавьте этот код:

if (Input.GetKeyDown(KeyCode.Space) && isGrounded == true)
    {
        isGrounded = false;
        Jump();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...