feat(dolphin): swim controller + third-person camera + HUD stats
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
46
scripts/dolphin/EcholocationPulse.gd
Normal file
46
scripts/dolphin/EcholocationPulse.gd
Normal file
@@ -0,0 +1,46 @@
|
||||
extends Node3D
|
||||
|
||||
const MAX_RADIUS: float = 20.0
|
||||
const DURATION: float = 1.0
|
||||
|
||||
signal pulse_finished()
|
||||
|
||||
|
||||
func trigger() -> void:
|
||||
var mesh_instance := MeshInstance3D.new()
|
||||
var sphere_mesh := SphereMesh.new()
|
||||
sphere_mesh.radius = 0.1
|
||||
sphere_mesh.height = 0.2
|
||||
mesh_instance.mesh = sphere_mesh
|
||||
|
||||
var mat := StandardMaterial3D.new()
|
||||
mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
|
||||
mat.albedo_color = Color(0.2, 0.85, 1.0, 0.5)
|
||||
mat.emission_enabled = true
|
||||
mat.emission = Color(0.1, 0.6, 1.0)
|
||||
mat.emission_energy_multiplier = 1.5
|
||||
mat.cull_mode = BaseMaterial3D.CULL_DISABLED
|
||||
mesh_instance.material_override = mat
|
||||
|
||||
add_child(mesh_instance)
|
||||
|
||||
var tween: Tween = create_tween()
|
||||
tween.set_parallel(true)
|
||||
tween.tween_method(
|
||||
func(r: float) -> void:
|
||||
mesh_instance.scale = Vector3(r, r, r),
|
||||
0.1,
|
||||
MAX_RADIUS,
|
||||
DURATION
|
||||
)
|
||||
tween.tween_method(
|
||||
func(a: float) -> void:
|
||||
mat.albedo_color = Color(0.2, 0.85, 1.0, a),
|
||||
0.5,
|
||||
0.0,
|
||||
DURATION
|
||||
)
|
||||
tween.chain().tween_callback(func() -> void:
|
||||
mesh_instance.queue_free()
|
||||
pulse_finished.emit()
|
||||
)
|
||||
Reference in New Issue
Block a user