-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtreasure_card_3d.gd
46 lines (37 loc) · 1.47 KB
/
treasure_card_3d.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
extends ShopCard3D
var cam
var done_spinning = false
var exiting = false
var exit_time = 0.0
func _ready():
cam = get_viewport().get_camera()
global_rotation = Vector3.ZERO
global_translation = cam.project_position(get_viewport().size / 2, 10.0)
hover_time = -1.0
$Card.enable_treasure_glow()
Game.connect("accept_treasure", self, "on_accept_treasure")
func on_accept_treasure():
exiting = true
tween.interpolate_property(self, "global_rotation", global_rotation, Vector3(0, PI, 0), 0.5, Tween.TRANS_QUAD, Tween.EASE_IN_OUT)
tween.interpolate_property(self, "scale", scale, Vector3(0, 0, 0), 1.0)
tween.start()
func do_process(delta):
if exiting:
exit_time += delta
hover_time += delta
var screen_size = get_viewport().size
var screen_center = screen_size / 2
global_translation = cam.project_position(screen_center, (15) * screen_size.x / 800.0)
if exiting:
return
global_rotation = Vector3.ZERO
$Card.adjust_treasure_glow(lerp(0, 0.1, ease(clamp((hover_time - 1.3) / 12.0, 0, 1), 0.2)))
if !done_spinning:
var start = Vector3(0, -15, 0)
global_translation += lerp(start, Vector3.ZERO, ease(clamp(hover_time / 2.0, 0, 1), 0.4))
rotate_y(lerp(30, 0, ease(clamp(hover_time / 1.7, 0, 1), 0.6)))
if hover_time > 2.0:
done_spinning = true
return
var target = clamp((screen_center.x - get_viewport().get_mouse_position().x) / screen_size.x, -1, 1)
rotate(Vector3(0, 0.8, 0.2).normalized(), lerp(0, target, ease(clamp((hover_time - 2.5) * 2.0, 0, 1), 0.5)))