extends KinematicBody2D export var direction = 1 export var speed = 20 #How far to move export var left_up_boundary = 0.0 export var right_down_boundary = 0.0 #Move horizontal or vertical export(int, "Horizontal", "Vertical") var move_direction #Onreadys onready var startpos = position onready var sprite = $Sprite onready var hitbox = $CollisionShape2D func _ready(): sprite.set_region_rect(Rect2(0,0,8 * scale.x,4)) sprite.scale.x /= scale.x left_up_boundary *= 8 right_down_boundary *= 8 #Better offset for vertical platforms if move_direction == 1: right_down_boundary -= 5 left_up_boundary -= 1 func _physics_process(delta): if move_direction == 0: move_side_to_side(delta) else: move_up_and_down(delta) func move_side_to_side(delta): #Move position.x += direction * (speed * delta) #Switch dir if position.x >= startpos.x + (right_down_boundary): direction = -1 if position.x <= startpos.x + (-left_up_boundary): direction = 1 func move_up_and_down(delta): #Move position.y += direction * (speed * delta) #fix graphics if direction < 0.0 and speed >= 30.0: sprite.position.y = 1.0 else: sprite.position.y = 2.0 #Switch dir if position.y >= startpos.y + (right_down_boundary): direction = -1 if position.y <= startpos.y + (-left_up_boundary): direction = 1