vrp-years-apart/AgePlayer.gd

40 lines
1.2 KiB
GDScript

extends XROrigin3D
# Gleiches Enum zur Sicherheit
enum AgeState { BABY, CHILD, TEEN }
# Skalierungs-Faktoren (XROrigin Scale)
# < 1.0 macht dich klein (Welt wirkt riesig)
# 1.0 ist Normalgröße
var scale_baby = 0.3 # ca. 30% Größe (Baby)
var scale_child = 0.65 # ca. 65% Größe (Kind)
var scale_teen = 1.0 # 100% Größe (Teenager)
func _ready():
# Wir starten initial als Baby
apply_scale(scale_baby)
# Diese Funktion muss mit dem Signal der Uhr verbunden werden
func _on_watch_age_changed(new_age_state):
match new_age_state:
AgeState.BABY:
tween_scale(scale_baby)
AgeState.CHILD:
tween_scale(scale_child)
AgeState.TEEN:
tween_scale(scale_teen)
func tween_scale(target_scale_value: float):
# Wir nutzen Tween für einen sanften Übergang (vermeidet Übelkeit)
var tween = create_tween()
# Wir skalieren den gesamten XROrigin
# Vector3.ONE * target_scale ergibt (x, y, z) mit dem gleichen Wert
tween.tween_property(self, "scale", Vector3.ONE * target_scale_value, 0.5).set_trans(Tween.TRANS_SINE)
print("Skaliere Spieler zu: ", target_scale_value)
func apply_scale(val: float):
# Harte Skalierung ohne Animation (für den Start)
scale = Vector3.ONE * val