diff options
Diffstat (limited to 'client/map/items/item.gd')
-rw-r--r-- | client/map/items/item.gd | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/client/map/items/item.gd b/client/map/items/item.gd index bf61966f..ea5b3937 100644 --- a/client/map/items/item.gd +++ b/client/map/items/item.gd @@ -20,6 +20,8 @@ const CHECKMARK: PackedScene = preload("uid://bdbw8whs3data") var owned_by: Node3D var base: Node3D = Node3D.new() +var rotation_target: float = 0. +var position_target: Vector3 = Vector3(0., 0., 0.) var progress_instance: Progress3D = preload("res://map/progress/progress.tscn").instantiate() var take_sound: PlayRandom = preload("res://audio/play_random.tscn").instantiate() @@ -63,12 +65,11 @@ func _process(delta): var player_owned = owned_by.get_parent().get_parent() is Player player_owned_timer = player_owned_timer + delta if player_owned else 0. var anim_speed = 10.0 * exp(player_owned_timer * 3.0) # infinity is fine. G.interpolate can handle it - position = G.interpolate(position, owned_by.global_position, delta * anim_speed) - if player_owned: rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * anim_speed) - else: rotation.y = G.interpolate_angle_closest_quarter(rotation.y, owned_by.global_rotation.y, delta * anim_speed) + position = G.interpolate(position, position_target, delta * anim_speed) + rotation.y = G.interpolate_angle(rotation.y, rotation_target, delta * anim_speed) if creation_timer != null: creation_timer += delta * 10.0 - if creation_timer > 1: + if creation_timer > 1: scale = Vector3.ONE creation_timer = null else: scale = Vector3.ONE * creation_timer |