39 lines
1 KiB
GDScript
39 lines
1 KiB
GDScript
extends "res://objects/enemy/enemy.gd"
|
|
|
|
export var speed = 0.0
|
|
export var direction = 1.0
|
|
|
|
onready var line = $Line2D
|
|
onready var hitbox = $Hitbox
|
|
|
|
export var up_boundary = 0
|
|
export var down_boundary = 0
|
|
|
|
#var floor_y = 0.0
|
|
|
|
func _ready():
|
|
down_boundary = max(5.0, hitbox.position.y + down_boundary * 8.0)
|
|
up_boundary = max(5.0, hitbox.position.y - up_boundary * 8.0)
|
|
|
|
var raycast = $RayCast2D
|
|
# detect ceiling
|
|
raycast.force_raycast_update()
|
|
var old_y = hitbox.global_position.y
|
|
global_position.y = raycast.get_collision_point().y
|
|
hitbox.global_position.y = old_y
|
|
line.points[1].y = hitbox.position.y
|
|
raycast.queue_free()
|
|
#Easy mode
|
|
if Game.is_easy_mode:
|
|
speed *= Game.easy_mode_speed_factor
|
|
|
|
func _physics_process(delta):
|
|
hitbox.position.y += direction * speed * delta
|
|
if hitbox.position.y < up_boundary:
|
|
hitbox.position.y = up_boundary
|
|
direction = 1.0
|
|
if hitbox.position.y > down_boundary:
|
|
hitbox.position.y = down_boundary
|
|
direction = -1.0
|
|
line.points[1].y = hitbox.position.y
|
|
death_blood_offset = hitbox.position
|