hero-mark-2/objects/enemy/laser_wall.gd

50 lines
1.3 KiB
GDScript

extends "res://objects/enemy/enemy_move_sidesideupdown.gd"
export var off_time = 1.0
export var on_time = 0.5
export var delay = 0.0
onready var line = $Laser
onready var cast = $RayCast2D
onready var timer = $Timer
onready var sparks = $SparkParticles
func _ready():
yield(get_tree().create_timer(delay, false), "timeout")
_disable_laser()
#Easy mode
if Game.is_easy_mode:
off_time /= Game.easy_mode_speed_factor
on_time /= Game.easy_mode_speed_factor
func _physics_process(delta):
if cast.is_colliding():
line.points[1].y = line.to_local(cast.get_collision_point()).y
line.visible = true
sparks.global_position = cast.get_collision_point()
sparks.emitting = true
var collider = cast.get_collider()
if collider.is_in_group("player_hitbox") or collider.is_in_group("msx"):
collider.get_parent().die()
else:
line.visible = false
sparks.emitting = false
func switch_action():
Console.print("Disable laser")
cast.enabled = false
off_time = INF
on_time = 0
func _enable_laser():
cast.enabled = true
timer.wait_time = on_time
timer.connect("timeout", self, "_disable_laser", [], CONNECT_ONESHOT)
timer.start()
func _disable_laser():
cast.enabled = false
timer.wait_time = off_time
timer.connect("timeout", self, "_enable_laser", [], CONNECT_ONESHOT)
timer.start()