40 lines
1.2 KiB
GDScript
40 lines
1.2 KiB
GDScript
extends Node2D
|
|
|
|
const SPEED = 30
|
|
|
|
var direction = 1
|
|
var is_dying = false
|
|
|
|
@onready var ray_cast_right: RayCast2D = $RayCastRight
|
|
@onready var ray_cast_left: RayCast2D = $RayCastLeft
|
|
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
|
|
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
|
@onready var killzone_enemy: Area2D = $Killzone_enemy
|
|
@onready var collision_kill_player: CollisionShape2D = $KillzonePlayer/CollisionShape2D
|
|
@onready var collision_kill_enemy: CollisionShape2D = $Killzone_enemy/CollisionShape2D
|
|
|
|
func _ready() -> void:
|
|
killzone_enemy.body_entered.connect(_on_killzone_body_entered)
|
|
|
|
func _process(delta: float) -> void:
|
|
if ray_cast_right.is_colliding():
|
|
direction = -1
|
|
animated_sprite_2d.flip_h = true
|
|
elif ray_cast_left.is_colliding():
|
|
direction = 1
|
|
animated_sprite_2d.flip_h = false
|
|
|
|
position.x += direction * SPEED * delta
|
|
|
|
|
|
func _on_killzone_body_entered(body: Node) -> void:
|
|
if body.is_in_group("player") and not is_dying:
|
|
is_dying = true
|
|
collision_kill_player.set_deferred("disabled",true)
|
|
animation_player.play("death")
|
|
body.velocity.y = -300
|
|
direction = 0
|
|
collision_kill_enemy.set_deferred("disabled", true)
|
|
await animation_player.animation_finished
|
|
queue_free()
|