ld52_olive_harvest/projectiles/OliveProjectile.gd

38 lines
1.5 KiB
GDScript

extends Area2D
var shooting_to_ground = false
var wheelbarrow = null
var slot = null
func shoot_to(target_pos: Vector2, in_time: float):
$Tween.interpolate_property(self, "position:x", self.position.x, target_pos.x, in_time, Tween.TRANS_QUART, Tween.EASE_OUT)
$Tween.interpolate_property(self, "position:y", self.position.y, target_pos.y, in_time, Tween.TRANS_BOUNCE, Tween.EASE_OUT)
$Tween.start()
shooting_to_ground = true
func harvest_into_wheelbarrow(target_pos: Vector2, target_rotation: float, new_wheelbarrow: Node2D, new_slot: Node2D):
var first_stage_time = rand_range(0.2, 0.5)
var second_stage_time = rand_range(0.2, 0.6)
var mid_pos = Vector2(target_pos.x + rand_range(-4, 4), target_pos.y - 40)
$Tween.interpolate_property(self, "position", self.position, mid_pos, first_stage_time, Tween.TRANS_QUART, Tween.EASE_OUT)
$Tween.interpolate_property(self, "position:x", mid_pos.x, target_pos.x, second_stage_time, Tween.TRANS_QUART, Tween.EASE_OUT, first_stage_time)
$Tween.interpolate_property(self, "position:y", mid_pos.y, target_pos.y, second_stage_time, Tween.TRANS_BOUNCE, Tween.EASE_OUT, first_stage_time)
$Tween.interpolate_property(self, "rotation", self.rotation, target_rotation, first_stage_time, Tween.TRANS_QUAD, Tween.EASE_IN_OUT)
$Tween.start()
wheelbarrow = new_wheelbarrow
slot = new_slot
func _on_Tween_tween_all_completed():
$Tween.remove_all()
if shooting_to_ground:
self.add_to_group("olive_collectible")
shooting_to_ground = false
elif wheelbarrow != null:
wheelbarrow.slot_entry_complete(slot)
self.queue_free()