diff options
Diffstat (limited to 'client/map')
-rw-r--r-- | client/map/items/item.gd | 18 |
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 |