- BubbleTrail.gd: GPUParticles3D, auto-configured in _ready, set_intensity() API - BlockBreakParticles.gd: one_shot burst, emit_burst(pos, color) API - DolphinController.gd: bubble_trail onready + speed_factor hook in _update_movement - Dolphin.tscn: BubbleEmitterPoint (0,0,1.2) > BubbleTrail child added Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
184 lines
5.6 KiB
Plaintext
184 lines
5.6 KiB
Plaintext
[gd_scene load_steps=24 format=3 uid="uid://dolphin_main"]
|
|
|
|
[ext_resource type="Script" path="res://scripts/dolphin/DolphinController.gd" id="1_controller"]
|
|
[ext_resource type="Script" path="res://scripts/dolphin/HUD.gd" id="2_hud"]
|
|
[ext_resource type="Script" path="res://scripts/dolphin/EcholocationPulse.gd" id="3_echo"]
|
|
[ext_resource type="Script" path="res://scripts/dolphin/BubbleTrail.gd" id="4_bubble_trail"]
|
|
|
|
[sub_resource type="CapsuleShape3D" id="1_colshape"]
|
|
radius = 0.4
|
|
height = 2.0
|
|
|
|
[sub_resource type="CapsuleMesh" id="2_body_mesh"]
|
|
radius = 0.4
|
|
height = 2.0
|
|
|
|
[sub_resource type="StandardMaterial3D" id="3_body_mat"]
|
|
albedo_color = Color(0.29, 0.478, 0.584, 1)
|
|
|
|
[sub_resource type="CapsuleMesh" id="4_belly_mesh"]
|
|
radius = 0.35
|
|
height = 1.6
|
|
|
|
[sub_resource type="StandardMaterial3D" id="5_belly_mat"]
|
|
albedo_color = Color(0.91, 0.933, 0.949, 1)
|
|
|
|
[sub_resource type="CapsuleMesh" id="6_tail_mesh"]
|
|
radius = 0.2
|
|
height = 0.9
|
|
|
|
[sub_resource type="StandardMaterial3D" id="7_tail_mat"]
|
|
albedo_color = Color(0.29, 0.478, 0.584, 1)
|
|
|
|
[sub_resource type="PrismMesh" id="8_fin_mesh"]
|
|
size = Vector3(0.15, 0.4, 0.08)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="9_fin_mat"]
|
|
albedo_color = Color(0.29, 0.478, 0.584, 1)
|
|
|
|
[sub_resource type="CapsuleMesh" id="10_pec_mesh"]
|
|
radius = 0.1
|
|
height = 0.5
|
|
|
|
[sub_resource type="StandardMaterial3D" id="11_pec_mat"]
|
|
albedo_color = Color(0.29, 0.478, 0.584, 1)
|
|
|
|
[sub_resource type="StyleBoxFlat" id="12_panel_style"]
|
|
bg_color = Color(0.05, 0.05, 0.05, 0.7)
|
|
corner_radius_top_left = 10
|
|
corner_radius_top_right = 10
|
|
corner_radius_bottom_left = 10
|
|
corner_radius_bottom_right = 10
|
|
|
|
[node name="Dolphin" type="CharacterBody3D"]
|
|
script = ExtResource("1_controller")
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
|
shape = SubResource("1_colshape")
|
|
|
|
[node name="DolphinBody" type="Node3D" parent="."]
|
|
rotation = Vector3(0, 0, 0)
|
|
|
|
[node name="Body" type="MeshInstance3D" parent="DolphinBody"]
|
|
rotation = Vector3(1.5708, 0, 0)
|
|
mesh = SubResource("2_body_mesh")
|
|
surface_material_override/0 = SubResource("3_body_mat")
|
|
|
|
[node name="Belly" type="MeshInstance3D" parent="DolphinBody"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.05, 0.15)
|
|
rotation = Vector3(1.5708, 0, 0)
|
|
mesh = SubResource("4_belly_mesh")
|
|
surface_material_override/0 = SubResource("5_belly_mat")
|
|
|
|
[node name="Tail" type="MeshInstance3D" parent="DolphinBody"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.1)
|
|
rotation = Vector3(1.5708, 0, 0)
|
|
mesh = SubResource("6_tail_mesh")
|
|
surface_material_override/0 = SubResource("7_tail_mat")
|
|
|
|
[node name="DorsalFin" type="MeshInstance3D" parent="DolphinBody"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45, -0.1)
|
|
mesh = SubResource("8_fin_mesh")
|
|
surface_material_override/0 = SubResource("9_fin_mat")
|
|
|
|
[node name="PecFinLeft" type="MeshInstance3D" parent="DolphinBody"]
|
|
transform = Transform3D(1, 0, 0, 0, 0.866, -0.5, 0, 0.5, 0.866, -0.45, 0.0, 0.1)
|
|
mesh = SubResource("10_pec_mesh")
|
|
surface_material_override/0 = SubResource("11_pec_mat")
|
|
|
|
[node name="PecFinRight" type="MeshInstance3D" parent="DolphinBody"]
|
|
transform = Transform3D(1, 0, 0, 0, 0.866, 0.5, 0, -0.5, 0.866, 0.45, 0.0, 0.1)
|
|
mesh = SubResource("10_pec_mesh")
|
|
surface_material_override/0 = SubResource("11_pec_mat")
|
|
|
|
[node name="CameraPivot" type="Node3D" parent="."]
|
|
|
|
[node name="SpringArm" type="SpringArm3D" parent="CameraPivot"]
|
|
spring_length = 3.5
|
|
rotation = Vector3(0, 3.14159, 0)
|
|
|
|
[node name="Camera" type="Camera3D" parent="CameraPivot/SpringArm"]
|
|
|
|
[node name="BubbleEmitterPoint" type="Node3D" parent="."]
|
|
position = Vector3(0, 0, 1.2)
|
|
|
|
[node name="BubbleTrail" type="GPUParticles3D" parent="BubbleEmitterPoint"]
|
|
script = ExtResource("4_bubble_trail")
|
|
|
|
[node name="EcholocationPulse" type="Node3D" parent="."]
|
|
script = ExtResource("3_echo")
|
|
|
|
[node name="HUD" type="CanvasLayer" parent="."]
|
|
script = ExtResource("2_hud")
|
|
|
|
[node name="Panel" type="PanelContainer" parent="HUD"]
|
|
anchors_preset = 0
|
|
anchor_left = 0.0
|
|
anchor_top = 1.0
|
|
anchor_right = 0.0
|
|
anchor_bottom = 1.0
|
|
offset_left = 16.0
|
|
offset_top = -160.0
|
|
offset_right = 220.0
|
|
offset_bottom = -16.0
|
|
theme_override_styles/panel = SubResource("12_panel_style")
|
|
|
|
[node name="VBox" type="VBoxContainer" parent="HUD/Panel"]
|
|
layout_mode = 2
|
|
theme_override_constants/separation = 8
|
|
offset_left = 10.0
|
|
offset_top = 10.0
|
|
offset_right = -10.0
|
|
offset_bottom = -10.0
|
|
|
|
[node name="OxygenRow" type="HBoxContainer" parent="HUD/Panel/VBox"]
|
|
layout_mode = 2
|
|
|
|
[node name="OxygenLabel" type="Label" parent="HUD/Panel/VBox/OxygenRow"]
|
|
layout_mode = 2
|
|
text = "O2:"
|
|
custom_minimum_size = Vector2(36, 0)
|
|
|
|
[node name="OxygenBar" type="ProgressBar" parent="HUD/Panel/VBox/OxygenRow"]
|
|
unique_name_in_owner = true
|
|
layout_mode = 2
|
|
size_flags_horizontal = 3
|
|
custom_minimum_size = Vector2(130, 18)
|
|
max_value = 100.0
|
|
value = 100.0
|
|
show_percentage = false
|
|
|
|
[node name="HealthRow" type="HBoxContainer" parent="HUD/Panel/VBox"]
|
|
layout_mode = 2
|
|
|
|
[node name="HealthLabel" type="Label" parent="HUD/Panel/VBox/HealthRow"]
|
|
layout_mode = 2
|
|
text = "HP:"
|
|
custom_minimum_size = Vector2(36, 0)
|
|
|
|
[node name="HealthBar" type="ProgressBar" parent="HUD/Panel/VBox/HealthRow"]
|
|
unique_name_in_owner = true
|
|
layout_mode = 2
|
|
size_flags_horizontal = 3
|
|
custom_minimum_size = Vector2(130, 18)
|
|
max_value = 100.0
|
|
value = 100.0
|
|
show_percentage = false
|
|
|
|
[node name="HungerRow" type="HBoxContainer" parent="HUD/Panel/VBox"]
|
|
layout_mode = 2
|
|
|
|
[node name="HungerLabel" type="Label" parent="HUD/Panel/VBox/HungerRow"]
|
|
layout_mode = 2
|
|
text = "Food:"
|
|
custom_minimum_size = Vector2(36, 0)
|
|
|
|
[node name="HungerBar" type="ProgressBar" parent="HUD/Panel/VBox/HungerRow"]
|
|
unique_name_in_owner = true
|
|
layout_mode = 2
|
|
size_flags_horizontal = 3
|
|
custom_minimum_size = Vector2(130, 18)
|
|
max_value = 100.0
|
|
value = 100.0
|
|
show_percentage = false
|