Как запретить игроку прыгать в воздухе? - PullRequest
1 голос
/ 27 мая 2020

Я не хочу, чтобы мой игрок прыгал в воздухе, но я ничего не могу найти.

Это то, что у меня есть. Они могут прыгать, но они могут прыгать вечно, и это проблема.

using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
  public float speed = 5f;
  public float jumpSpeed = 8f;
  private float movement = 0f;
  public bool alive;
  private Rigidbody2D rigidBody;
  // Use this for initialization
  void Start () {
    rigidBody = GetComponent<Rigidbody2D> ();
        // Use this for initialization
    }


  // Update is called once per frame
  void Update () {
    movement = Input.GetAxis ("Horizontal");
    if (movement > 0f) {
      rigidBody.velocity = new Vector2 (movement * speed, rigidBody.velocity.y);
    }
    else if (movement < 0f) {
      rigidBody.velocity = new Vector2 (movement * speed, rigidBody.velocity.y);
    } 
    else {
      rigidBody.velocity = new Vector2 (0,rigidBody.velocity.y);
    }
    if(Input.GetButtonDown ("Jump")){
      rigidBody.velocity = new Vector2(rigidBody.velocity.x,jumpSpeed);
    }
  }
}

1 Ответ

3 голосов
/ 28 мая 2020

Простой вариант - сохранить логическое значение, такое как _inAir, которое получает значение true, когда игрок впервые прыгает, и false, когда его RigidBody2D сталкивается с землей (см., Например, OnCollisionEnter2D ).

Тогда чек if(Input.GetButtonDown ("Jump")){ становится

if (!_inAir && Input.GetButtonDown("Jump")) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...