0 votes

Goodnight, I'm learning GDscript and I make a personal challenge to code a double jump for my character, I made it but it feels a little slow sometimes and sometimes doesn´t work, this is the Script I make please tell me if there is something to improve:

<extends KinematicBody2D

const UP = Vector2(0,-1)
const GRAVITY = 20
const SPEED = 200
const JUMP_HEIGHT = -500
const MAX_JUMP_COUNT = 2
var second_jump = false
var jump_count = 0

var motion = Vector2()

func _physics_process(delta):
    motion.y += GRAVITY
    if Input.is_action_pressed("ui_right"):
        motion.x = SPEED
        $AnimatedSprite.flip_h = false
    elif Input.is_action_pressed("ui_left"):
        motion.x = -SPEED
        $AnimatedSprite.flip_h = true
        motion.x = 0

    if is_on_floor():
        if Input.is_action_just_pressed("ui_up"):
            motion.y = JUMP_HEIGHT
            jump_count = 1

    motion = move_and_slide(motion, UP)

    if second_jump:
        if Input.is_action_just_pressed("ui_up"):
            motion.y = JUMP_HEIGHT
            jump_count = 2

    if jump_count < MAX_JUMP_COUNT:
        second_jump = true
        second_jump = false>
in Engine by (16 points)

1 Answer

+1 vote

Nicely done! I think the slow feeling is just the gravity begin to low bumping that up to 100 and the jump to -2000 should fix that.

Then you could add a long jump, mario style, with something like

if Input.is_action_pressed("ui_up") and motion.y<0:
    motion.y += GRAVITY*0.5
    motion.y += GRAVITY 
by (953 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.