fix: interactable scaling
This commit is contained in:
parent
16b0fbb533
commit
8707ef9ecf
|
|
@ -7,9 +7,11 @@ var interaction_ui : Control = null
|
|||
@onready var frame: Sprite3D = $Frame
|
||||
@onready var canvas_layer: CanvasLayer = $CanvasLayer
|
||||
|
||||
@onready var note: Node3D = $View/Sprite3D
|
||||
@onready var caption : Label3D = %Caption
|
||||
@onready var prompt : Label3D = %Prompt
|
||||
|
||||
|
||||
@export var billboard : bool = true
|
||||
|
||||
var active : bool = true
|
||||
|
|
@ -24,6 +26,7 @@ var collected : bool = false:
|
|||
var tween: Tween = null
|
||||
|
||||
func _ready() -> void:
|
||||
assert(note and frame and canvas_layer, "Interactable must have views and frame attached")
|
||||
view.scale = Vector3.ZERO
|
||||
frame.modulate.a = 0
|
||||
if interaction:
|
||||
|
|
@ -44,21 +47,29 @@ func _player_active(value: bool) -> void:
|
|||
|
||||
func expand() -> void:
|
||||
shown = true
|
||||
view.scale = Vector3.ZERO
|
||||
frame.modulate = Color.TRANSPARENT
|
||||
view.rotation.z = -PI*0.5 # Godot angle wrapping is ... something
|
||||
if tween: tween.kill()
|
||||
|
||||
if tween and tween.is_valid():
|
||||
tween.kill()
|
||||
else:
|
||||
view.scale = Vector3.ZERO
|
||||
note.rotation.z = -PI*0.5 # Godot angle wrapping is ... something
|
||||
frame.modulate = Color.TRANSPARENT
|
||||
frame.scale = Vector3(1.5, 1.5, 1.5)
|
||||
|
||||
tween = create_tween().set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK)
|
||||
tween.parallel().tween_property(view, "scale", Vector3.ONE, 1.0).set_delay(0.5)
|
||||
tween.parallel().tween_property(view, "rotation:z", 0, 0.8).set_delay(0.5)
|
||||
tween.parallel().tween_property(frame, "modulate:a", 1.0, 2.0)
|
||||
tween.parallel().tween_property(note, "rotation:z", 0, 0.8).set_delay(0.5)
|
||||
tween.parallel().tween_property(frame, "modulate:a", 1.0, 2.0).set_trans(Tween.TRANS_QUAD)
|
||||
tween.parallel().tween_property(frame, "scale", Vector3.ONE, 1.0).set_trans(Tween.TRANS_QUART)
|
||||
|
||||
|
||||
func collapse() -> void:
|
||||
shown = false
|
||||
if tween: tween.kill()
|
||||
if tween and tween.is_valid(): tween.kill()
|
||||
tween = create_tween().set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_BACK)
|
||||
tween.parallel().tween_property(view, "scale", Vector3.ZERO, 0.3)
|
||||
tween.parallel().tween_property(frame, "modulate:a", 0, 0.6)
|
||||
tween.parallel().tween_property(frame, "modulate:a", 0, 0.5).set_trans(Tween.TRANS_QUAD)
|
||||
tween.parallel().tween_property(frame, "scale", Vector3.ONE * 2.0, 1.0).set_trans(Tween.TRANS_QUAD)
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
_process_billboard()
|
||||
|
|
|
|||
Loading…
Reference in New Issue