36 lines
765 B
GDScript
36 lines
765 B
GDScript
class_name BatExtractionBat
|
|
extends Sprite2D
|
|
|
|
|
|
@export var speed: float = 0.2
|
|
|
|
@onready var grab_area: Area2D = $BatArea
|
|
|
|
var path_follow: PathFollow2D
|
|
var is_grabbed = false
|
|
var is_dropped = false
|
|
var pliers: Pliers
|
|
|
|
func _ready():
|
|
path_follow = get_parent() as PathFollow2D
|
|
pliers = get_tree().get_first_node_in_group("grabber") as Pliers
|
|
|
|
func _physics_process(delta):
|
|
if is_dropped: return
|
|
|
|
if is_grabbed:
|
|
global_position = pliers.grab_area.global_position
|
|
else:
|
|
path_follow.progress_ratio += delta * speed
|
|
|
|
|
|
func grab_bat():
|
|
is_grabbed = true
|
|
grab_area.set_deferred("monitoring", false)
|
|
grab_area.set_deferred("monitorable", false)
|
|
path_follow.progress_ratio = 0.0
|
|
position = Vector2.ZERO
|
|
top_level = true
|
|
|
|
func drop_bat():
|
|
is_dropped = true
|