Как избежать прыжков MidAir в Unity с помощью c # - PullRequest
0 голосов
/ 17 января 2019

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

Я пытался использовать OnCollisionStay / Enter вместе с OnCollisionExit, чтобы сгенерировать bool, который проверяется вместе с вводом перед прыжком, это сработало лучше, но в единстве отсутствуют триггеры

Я не могу проверить положение с помощью gameObject.transform.position.y, потому что у меня разные платформы с повышенными правами.

isGounded работает с другим кодом, но мешает другим моим движениям (которые реализованы в AddForce при вводе)

Я не могу понять, почему этот код не работает, я надеюсь, что кто-то может помочь мне понять.

using UnityEngine
public class PlayerMovement : MonoBehaviour
{
    private CharacterController controller;
    public Rigidbody rb;
    public Transform PPos; 
    public float jumpForce = 10f;
}
    public void Update()
{

    if(controller.isGrounded && Input.GetKeyDown(KeyCode.Space))
    {
      rb.AddForce(0, jumpForce, 0);
      Debug.Log("Jump Executed");
    }
}

Я не получаю синтаксическую ошибку

1 Ответ

0 голосов
/ 18 января 2019

Редактировать

Вам нужно установить controller.isGrounded всякий раз, когда ваш персонаж имеет возможность прыгать.

PlayerScript

void OnCollisionEnter(collision other)
{
    controller.isGrounded = other.gameObject.CompareTag("Ground");
}

Оригинал

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

if(Input.GetKeyDown(KeyCode.Space))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...