39 lines
898 B
GDScript
39 lines
898 B
GDScript
extends RigidBody2D
|
|
|
|
@onready var area_2d: Area2D = $Area2D
|
|
@onready var kill_after: Timer = $KillAfter
|
|
@onready var kill_audio: AudioStreamPlayer2D = $KillAudio
|
|
|
|
@export var speed = 100
|
|
@export var rotation_speed = 1
|
|
@export var jump_strength_on_death = 100
|
|
var is_moving = true
|
|
var first_frame_available = true
|
|
|
|
func _ready() -> void:
|
|
freeze = true
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
if is_moving:
|
|
position.x -= speed
|
|
else:
|
|
freeze = false
|
|
area_2d.monitoring = false
|
|
area_2d.monitorable = false
|
|
|
|
linear_velocity.x = 0
|
|
linear_velocity += get_gravity() * delta
|
|
angular_velocity = rotation_speed
|
|
|
|
if first_frame_available:
|
|
apply_impulse(Vector2.UP * jump_strength_on_death)
|
|
first_frame_available = false
|
|
|
|
func _on_kill_after_timeout() -> void:
|
|
queue_free()
|
|
|
|
func _on_body_entered(body: Node) -> void:
|
|
is_moving = false
|
|
kill_audio.play()
|
|
kill_after.start()
|