From fb64f15e22acfc1c03c7c5357dd66077454adbcf Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Thu, 31 Dec 2020 11:33:12 +0100 Subject: Initial commit --- Character.gd | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Character.gd (limited to 'Character.gd') diff --git a/Character.gd b/Character.gd new file mode 100644 index 0000000..54bfdc5 --- /dev/null +++ b/Character.gd @@ -0,0 +1,89 @@ +extends KinematicBody2D + + +const SPEED = 130 +const JUMPFORCE = -500 +const GRAVITY = 20 + +var velocity = Vector2() +var direction = Enum.DIRECTION.RIGHT + +var canDoubleJump = false +var hasPlayedFallStop = false + + +func _physics_process(_delta): + if Input.is_action_pressed("ui_left"): + velocity.x = -SPEED + direction = Enum.DIRECTION.LEFT + $Sprite.play("walk") + $Sprite.flip_h = true + + if Input.is_action_pressed("ui_accept"): + velocity.x *=2 + $Sprite.play("slide") + elif Input.is_action_pressed("ui_right"): + velocity.x = SPEED + direction = Enum.DIRECTION.RIGHT + $Sprite.play("walk") + $Sprite.flip_h = false + + if Input.is_action_pressed("ui_accept"): + velocity.x *= 2 + $Sprite.play("slide") + else: + $Sprite.play("idle") + + # jump and fall animation + if not is_on_floor(): + $Sprite.play("jump") + if velocity.y > -JUMPFORCE: + $CheckFallLanding.set_enabled(true) + $CheckFallStop.set_enabled(true) + if $CheckFallLanding.is_colliding(): + $Sprite.play("fall_stop_landing") + elif $CheckFallStop.is_colliding(): + $Sprite.play("fall_stop") + else: + $Sprite.play("fall") + else: + $CheckFallLanding.set_enabled(false) + $CheckFallStop.set_enabled(true) + + + # fall down + velocity.y += GRAVITY + + # jump + if Input.is_action_just_pressed("ui_up"): + if is_on_floor(): + canDoubleJump = true + velocity.y = JUMPFORCE + elif not is_on_floor() and not is_on_wall() and canDoubleJump: + canDoubleJump = false + velocity.y = JUMPFORCE + + if is_on_wall(): + velocity.y *= 0.8 + $Sprite.play("wall") + + if Input.is_action_just_pressed("ui_up"): + Input.action_release("ui_left") + Input.action_release("ui_right") + velocity.y = JUMPFORCE * 0.75 + if direction == Enum.DIRECTION.LEFT: + velocity.x = 2000 + $Sprite.flip_h = false + elif direction == Enum.DIRECTION.RIGHT: + velocity.x = -2000 + $Sprite.flip_h = true + + velocity = move_and_slide(velocity, Vector2.UP) + + # stop + velocity.x = lerp(velocity.x, 0, 0.7) + + +func check_flag(): + # $Sprite.play("dance anim") + print("FLAG CHECKED") -- cgit v1.2.3