aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/map/items/item.gd18
1 files changed, 10 insertions, 8 deletions
diff --git a/client/map/items/item.gd b/client/map/items/item.gd
index d256343c..526bf39f 100644
--- a/client/map/items/item.gd
+++ b/client/map/items/item.gd
@@ -27,7 +27,9 @@ var put_sound: PlayRandom = preload("res://audio/play_random.tscn").instantiate(
var sound_id
var destroy_timeout = null
-var creation_timer = 0
+var creation_timer = 0.0
+var item_owned = false
+var player_owned_timer = 0.0
func _init(owned_by_: Node3D):
progress_instance.position.y = 1
@@ -48,13 +50,13 @@ func _init(owned_by_: Node3D):
func _process(delta):
if not is_instance_valid(owned_by): return
- if owned_by.get_parent() is Item or owned_by is Item:
- return
- var p = owned_by.get_parent().get_parent() is Player
- var ispeed = 30.0 if p else 10.
- position = G.interpolate(position, owned_by.global_position, delta * ispeed)
- if p: rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * ispeed)
- else: rotation.y = G.interpolate_angle_closest_quarter(rotation.y, owned_by.global_rotation.y, delta * ispeed)
+ if owned_by.get_parent() is Item or owned_by is Item: return
+ 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)
+ 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)
if creation_timer != null:
scale = Vector3.ONE * creation_timer
creation_timer += delta * 10.0