From a492e9d461d9a24023f91fbe5a531e9501bf5bb8 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 16 Sep 2024 14:03:57 +0200 Subject: items animate instantly when held for longer --- client/map/items/item.gd | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'client') 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 -- cgit v1.2.3-70-g09d2