-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMeshInstance.gd
36 lines (31 loc) · 1.36 KB
/
MeshInstance.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
extends MeshInstance
var t : Transform
var offset = Vector3.ZERO
var rot_speed = .15 # smaller numbers = higher speed
func _ready():
transform = transform.translated(Vector3(1,1,1))
t = transform
func _input(event):
if event.is_action_pressed("ui_left") and !$Tween.is_active():
tween_rot(Vector3(0,0,1), 1)
offset = Vector3(-2,0,0)
if event.is_action_pressed("ui_right") and !$Tween.is_active():
get_parent().translate(Vector3(2,0,0))
transform = transform.translated(Vector3(-2,0,0))
tween_rot(Vector3(0,0,1), -1)
offset = Vector3(0,0,0)
if event.is_action_pressed("ui_up") and !$Tween.is_active():
tween_rot(Vector3(1,0,0), -1)
offset = Vector3(0,0,-2)
if event.is_action_pressed("ui_down") and !$Tween.is_active():
get_parent().translate(Vector3(0,0,2))
transform = transform.translated(Vector3(0,0,-2))
tween_rot(Vector3(1,0,0), 1)
offset = Vector3(0,0,0)
func tween_rot(axis, direction):
$Tween.interpolate_property(self,"transform",null,transform.rotated(axis, PI/4 * direction),rot_speed,Tween.TRANS_SINE, Tween.EASE_IN)
$Tween.interpolate_property(self,"transform",transform.rotated(axis, PI/4 * direction), transform.rotated(axis, PI/2 * direction),rot_speed,Tween.TRANS_SINE, Tween.EASE_OUT, rot_speed)
$Tween.start()
func _on_Tween_tween_all_completed():
transform = t # reset transformation
get_parent().translate(offset) # move cube