Here is some code to get you started.
extends Sprite
var velocity
var gravity
var jump_speed
var walk_speed
var hit_speed
var speed_limit
var min_pos
var max_pos
func _ready():
velocity = Vector2()
gravity = Vector2(0.0, 52.0)
jump_speed = Vector2(0.0, -22.0)
walk_speed = Vector2(24.0, 0.0)
hit_speed = Vector2(52.0, 0.0)
min_pos = Vector2(64, 64)
max_pos = get_viewport().size - min_pos
speed_limit = 12.0
func _physics_process(delta):
velocity += gravity * delta
if Input.is_action_pressed("move_left"):
velocity -= walk_speed * delta
elif Input.is_action_pressed("move_right"):
velocity += walk_speed * delta
elif abs(position.y - max_pos.y) < 2.0:
velocity.x *= 0.895
else:
velocity.x *= 0.985
velocity.x = clamp(velocity.x, -speed_limit, speed_limit)
translate(velocity)
if position.x < min_pos.x:
velocity.x = hit_speed.x
elif position.x > max_pos.x:
velocity.x = -hit_speed.x
position.x = clamp(position.x, min_pos.x, max_pos.x)
position.y = clamp(position.y, min_pos.y, max_pos.y)
func _input(event):
if event.is_action_pressed("jump") \
or event is InputEventScreenTouch:
velocity.y = jump_speed.y