revo-jailbreak/objects/environment/moving_platform/moving_platform.gd

51 lines
1.3 KiB
GDScript

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