Как определить, что тело кинетеми c не касается земли? - PullRequest
1 голос
/ 20 января 2020

Я новичок в скрипте GD и пытаюсь выучить язык.

Я делаю базовый c символьный контроллер. Я хочу сделать игру с функцией двойного прыжка и не знаю, как это сделать. У меня уже написан код ниже.

extends KinematicBody2D

const UP = Vector2(0,-1)
var motion = Vector2()
var jumps = 2
var isAddingToJumps = true;

func _physics_process(delta): 
    motion.y += 9.81
    if Input.is_action_pressed("ui_right"):
        motion.x = 100
    elif Input.is_action_pressed("ui_left"):
        motion.x = -100
    else:
        motion.x = 0

    if isAddingToJumps and is_on_floor():
        jumps += 2
        motion.y = 0
        isAddingToJumps = false


    if not is_on_floor():
        isAddingToJumps = true


    if Input.is_action_just_pressed("ui_up"):
        if jumps > 0:
            motion.y = -400
            jumps -= 1


    move_and_slide(motion, UP)

После некоторой отладки, я думаю, что я знаю проблему с кодом. Когда объект касается пола, он думает, что касается и не касается его одновременно. Есть ли какой-нибудь простой способ исправить это?

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

1 Ответ

0 голосов
/ 20 января 2020

Когда я изменю jumps += 2 на jumps = 2, это будет работать

...