From 90dd897a0943da93d4a77a1987be3ac68e7936e3 Mon Sep 17 00:00:00 2001 From: LUCASTUCIOUS Date: Sat, 22 Mar 2025 22:55:11 +0100 Subject: [PATCH] =?UTF-8?q?FLOATING=20BOAT=20=C2=A7=C2=A7=C2=A7!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boat/WalkableBoat.gd | 35 +++++++++++++-------- boat/boat.tscn | 45 ++++++++++++++++++++------- mat/watershader.tres | 57 +--------------------------------- ocean/Ocean2.tres | 6 ++-- ocean/Ocean_playground.tscn | 62 ++++++++++++++++++++++++++++++++++--- ocean/debug.gd | 0 ocean/debug.gd.uid | 1 + ocean/ocean.gd | 15 +++++---- project.godot | 2 +- 9 files changed, 128 insertions(+), 95 deletions(-) create mode 100644 ocean/debug.gd create mode 100644 ocean/debug.gd.uid diff --git a/boat/WalkableBoat.gd b/boat/WalkableBoat.gd index 8fe74bd..641329b 100644 --- a/boat/WalkableBoat.gd +++ b/boat/WalkableBoat.gd @@ -2,7 +2,7 @@ extends RigidBody3D class_name BoatBody3D -@export var float_force := 1.0 +@export var float_force := 20.0 @export var water_drag := 0.05 @export var water_angular_drag := 0.05 @@ -14,37 +14,46 @@ var submerged := false var is_docked: bool = false -@onready var ocean : Ocean = get_tree().get_nodes_in_group("ocean")[0] +@export var ocean : Ocean #= get_tree().get_nodes_in_group("ocean")[0] -@export var max_thrust_force: float = 1024 +@export var max_thrust_force: float = 2048 @export var max_steering: float = 128 var steering: float = 0 # steering rudder angle in radians var thrust_force: float = 0 # forward thrust force in Newtons - +func _process(_delta): + if Input.get_action_strength("move_forward") > 0.0: + thrust() + if Input.get_action_strength("turn_right") > 0.0: + steer_right() + if Input.get_action_strength("turn_left") > 0.0: + steer_left() # Called when the node enters the scene tree for the first time. func _ready(): - add_to_group("boats") + add_to_group("boats",true) func _physics_process(delta): submerged = false for p in probes: - var depth = ocean.get_water_level(p.global_position) - p.global_position.y - if depth > 0: - submerged = true - apply_force(Vector3.UP * float_force * gravity * depth, p.global_position - global_position) + if p.visible == true: + var depth = ocean.get_water_level(p.global_position) - p.global_position.y + if depth > 0: + submerged = true + apply_force(Vector3.UP * float_force * gravity * depth, p.global_position - global_position) + #print("Applying force: "+str(Vector3.UP * float_force * gravity * depth)+" at "+ str(p.position) +"("+str(p)+")") + + ## Code for user-input movement + apply_central_force(self.global_transform.basis.x.normalized() * Vector3(1, 0, 1) * thrust_force * delta) + #apply_torque(Vector3.UP * steering * delta) - apply_central_force(-self.global_transform.basis.z.normalized() * Vector3(1, 0, 1) * thrust_force) - apply_torque(Vector3.UP * steering) + apply_torque(global_transform.basis.y.normalized() * steering * 0.05) # for sideways motion - ##apply_torque(-global_transform.basis.z.normalized() * steering * 0.05) # for sideways motion - print("Submerged" + str(submerged)) reset_forces() func _integrate_forces(state: PhysicsDirectBodyState3D): diff --git a/boat/boat.tscn b/boat/boat.tscn index ecb90a2..6e4c2e9 100644 --- a/boat/boat.tscn +++ b/boat/boat.tscn @@ -1,35 +1,58 @@ -[gd_scene load_steps=4 format=3 uid="uid://babgqvkugifk1"] +[gd_scene load_steps=5 format=3 uid="uid://babgqvkugifk1"] [ext_resource type="Script" uid="uid://du135dtrpwm7o" path="res://boat/WalkableBoat.gd" id="1_ml88t"] [ext_resource type="PackedScene" uid="uid://bcdjvsj0la72h" path="res://boat/source/untitled.fbx" id="2_enlnh"] +[sub_resource type="GDScript" id="GDScript_enlnh"] +resource_name = "NoRotation" +script/source = "extends Node3D + + +func _process(_delta): + global_rotation = Vector3() +" + [sub_resource type="BoxShape3D" id="BoxShape3D_enlnh"] -size = Vector3(1.3, 1, 1) +size = Vector3(1.5252, 0.507935, 1) [node name="Boat" type="RigidBody3D"] mass = 10.0 script = ExtResource("1_ml88t") -[node name="SpringArm3D" type="SpringArm3D" parent="."] +[node name="Node3D" type="Node3D" parent="."] +script = SubResource("GDScript_enlnh") + +[node name="SpringArm3D" type="SpringArm3D" parent="Node3D"] transform = Transform3D(1, 0, 0, 0, 0.893285, 0.449491, 0, -0.449491, 0.893285, 0, 0.350159, 0) spring_length = 2.255 -[node name="Camera3D" type="Camera3D" parent="SpringArm3D"] +[node name="Camera3D" type="Camera3D" parent="Node3D/SpringArm3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.107117, 0.323316, 2.70191) [node name="untitled" parent="." instance=ExtResource("2_enlnh")] transform = Transform3D(-0.1, 0, -1.50996e-08, 0, 0.1, 0, 1.50996e-08, 0, -0.1, 0, -0.169637, 0) [node name="ProbeContainer" type="Node3D" parent="."] - -[node name="Proue" type="Marker3D" parent="ProbeContainer"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.696, 0, 0) - -[node name="Poupe" type="Marker3D" parent="ProbeContainer"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.604, 0, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.105972, 0) [node name="Cale2" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.25) + +[node name="Cale7" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.25) + +[node name="Cale3" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.507, 0, -0.2) + +[node name="Cale5" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.507, 0, 0.2) + +[node name="Cale4" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.568, 0, 0.25) + +[node name="Cale6" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.568, 0, -0.25) [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.64117, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00595701, 0.251318, 0) shape = SubResource("BoxShape3D_enlnh") diff --git a/mat/watershader.tres b/mat/watershader.tres index 7f9792f..eb0f8ab 100644 --- a/mat/watershader.tres +++ b/mat/watershader.tres @@ -1,9 +1,8 @@ -[gd_resource type="VisualShader" load_steps=74 format=3 uid="uid://dju4bgl0vd6f5"] +[gd_resource type="VisualShader" load_steps=72 format=3 uid="uid://dju4bgl0vd6f5"] [ext_resource type="Texture2D" uid="uid://dn01vy45t0mnc" path="res://mat/wavenoise.tres" id="1_vh75p"] [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_obdjg"] -linked_parent_graph_frame = 49 [sub_resource type="FastNoiseLite" id="FastNoiseLite_vh75p"] noise_type = 2 @@ -17,25 +16,21 @@ seamless = true noise = SubResource("FastNoiseLite_vh75p") [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_004we"] -linked_parent_graph_frame = 49 texture = SubResource("NoiseTexture2D_eafem") texture_type = 1 [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_0o2nh"] default_input_values = [0, Vector2(0, 0), 1, Vector2(-1, -1)] -linked_parent_graph_frame = 49 op_type = 0 operator = 2 [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_jwewd"] default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 0, 0)] -linked_parent_graph_frame = 49 op_type = 2 operator = 2 [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_dt65u"] default_input_values = [0, 0.0, 1, 1.5] -linked_parent_graph_frame = 49 operator = 5 [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_274gg"] @@ -56,45 +51,31 @@ default_value_enabled = true default_value = Color(1.4728e-05, 0.392619, 0.763696, 1) [sub_resource type="VisualShaderNodeVaryingGetter" id="VisualShaderNodeVaryingGetter_obdjg"] -linked_parent_graph_frame = 49 varying_name = "Noise" varying_type = 3 [sub_resource type="VisualShaderNodeProximityFade" id="VisualShaderNodeProximityFade_obdjg"] -linked_parent_graph_frame = 31 [sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_vh75p"] -linked_parent_graph_frame = 31 function = 31 [sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_eafem"] -linked_parent_graph_frame = 31 function = 0 [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_004we"] -linked_parent_graph_frame = 31 input_name = "time" [sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_0o2nh"] -linked_parent_graph_frame = 31 function = 12 [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_jwewd"] -linked_parent_graph_frame = 31 operator = 2 -[sub_resource type="VisualShaderNodeFrame" id="VisualShaderNodeFrame_dt65u"] -size = Vector2(2524, 1182) -title = "Foam" -attached_nodes = PackedInt32Array(27, 30, 24, 29, 26, 38, 23, 34, 33, 32, 35, 36, 37, 50, 53, 54, 60, 61, 58, 59, 57, 51, 52) - [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_274gg"] default_input_values = [0, 0.0, 1, 40.0] -linked_parent_graph_frame = 31 operator = 5 [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_qysla"] -linked_parent_graph_frame = 31 parameter_name = "FoamMin" hint = 1 max = 100.0 @@ -102,15 +83,12 @@ default_value_enabled = true default_value = 40.0 [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_ycrm4"] -linked_parent_graph_frame = 31 [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_bt44v"] default_input_values = [0, 0.0, 1, 1.0] -linked_parent_graph_frame = 31 operator = 2 [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_gokfr"] -linked_parent_graph_frame = 31 parameter_name = "RippleNumber" hint = 1 min = 1.0 @@ -119,37 +97,31 @@ default_value_enabled = true default_value = 6.0 [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_5fl1t"] -linked_parent_graph_frame = 31 parameter_name = "RippleSpeed" hint = 1 default_value_enabled = true default_value = 0.5 [sub_resource type="VisualShaderNodeMultiplyAdd" id="VisualShaderNodeMultiplyAdd_tk76b"] -linked_parent_graph_frame = 31 [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_y7ycs"] default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] op_type = 3 [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_6r64g"] -linked_parent_graph_frame = 49 input_name = "uv" [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_5wtf6"] default_input_values = [0, Vector2(0, 0), 1, Vector2(0, 0)] -linked_parent_graph_frame = 49 op_type = 0 operator = 2 [sub_resource type="VisualShaderNodeVaryingGetter" id="VisualShaderNodeVaryingGetter_cgaqp"] -linked_parent_graph_frame = 49 varying_name = "Cells" varying_type = 3 [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_wsoe0"] default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 0, 0)] -linked_parent_graph_frame = 49 op_type = 2 operator = 2 @@ -165,35 +137,24 @@ seamless = true noise = SubResource("FastNoiseLite_c8snt") [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_hcimu"] -linked_parent_graph_frame = 49 texture = SubResource("NoiseTexture2D_7x758") texture_type = 1 [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_qfu83"] default_input_values = [0, Vector2(0, 0), 1, Vector2(-1, -1)] -linked_parent_graph_frame = 49 op_type = 0 operator = 2 [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_osjwj"] -linked_parent_graph_frame = 49 [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_ft6xr"] -linked_parent_graph_frame = 49 input_name = "time" -[sub_resource type="VisualShaderNodeFrame" id="VisualShaderNodeFrame_obdjg"] -size = Vector2(2124, 1182) -title = "Noise" -attached_nodes = PackedInt32Array(15, 17, 10, 42, 44, 45, 48, 47, 46, 8, 16, 43, 41, 22, 11, 7, 5, 62) - [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_tk76b"] -linked_parent_graph_frame = 49 texture = ExtResource("1_vh75p") texture_type = 1 [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_obdjg"] -linked_parent_graph_frame = 31 parameter_name = "DistanceFade" hint = 1 max = 5.0 @@ -201,17 +162,14 @@ default_value_enabled = true default_value = 0.5 [sub_resource type="VisualShaderNodeSwitch" id="VisualShaderNodeSwitch_vh75p"] -linked_parent_graph_frame = 31 [sub_resource type="VisualShaderNodeBooleanParameter" id="VisualShaderNodeBooleanParameter_eafem"] -linked_parent_graph_frame = 31 parameter_name = "FoamNoise" default_value_enabled = true default_value = true [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_004we"] default_input_values = [0, 0.0, 1, 0.0, 2, 0.5] -linked_parent_graph_frame = 31 [sub_resource type="FastNoiseLite" id="FastNoiseLite_obdjg"] noise_type = 0 @@ -224,7 +182,6 @@ resource_name = "RippleNoise" noise = SubResource("FastNoiseLite_obdjg") [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_jwewd"] -linked_parent_graph_frame = 31 texture = SubResource("NoiseTexture2D_0o2nh") texture_type = 1 @@ -235,15 +192,12 @@ default_value_enabled = true default_value = 0.969 [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_vh75p"] -linked_parent_graph_frame = 31 input_name = "time" [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_eafem"] -linked_parent_graph_frame = 31 [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_004we"] default_input_values = [0, 0.0, 1, 0.1] -linked_parent_graph_frame = 31 operator = 2 [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_y7ycs"] @@ -253,16 +207,13 @@ op_type = 2 [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_0o2nh"] default_input_values = [0, 0.0, 1, 2.0] -linked_parent_graph_frame = 31 operator = 5 [sub_resource type="VisualShaderNodeVaryingGetter" id="VisualShaderNodeVaryingGetter_jwewd"] -linked_parent_graph_frame = 31 varying_name = "Noise" varying_type = 3 [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_eafem"] -linked_parent_graph_frame = 49 parameter_name = "FoamScale" hint = 1 max = 5.0 @@ -270,10 +221,8 @@ default_value_enabled = true default_value = 2.0 [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_6r64g"] -linked_parent_graph_frame = 49 [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_5wtf6"] -linked_parent_graph_frame = 49 input_name = "time" [sub_resource type="VisualShaderNodeVec2Parameter" id="VisualShaderNodeVec2Parameter_vh75p"] @@ -745,8 +694,6 @@ nodes/fragment/29/node = SubResource("VisualShaderNodeFloatFunc_0o2nh") nodes/fragment/29/position = Vector2(560, -40) nodes/fragment/30/node = SubResource("VisualShaderNodeFloatOp_jwewd") nodes/fragment/30/position = Vector2(780, 20) -nodes/fragment/31/node = SubResource("VisualShaderNodeFrame_dt65u") -nodes/fragment/31/position = Vector2(-1000, -440) nodes/fragment/32/node = SubResource("VisualShaderNodeFloatOp_274gg") nodes/fragment/32/position = Vector2(420, 180) nodes/fragment/33/node = SubResource("VisualShaderNodeFloatParameter_qysla") @@ -779,8 +726,6 @@ nodes/fragment/47/node = SubResource("VisualShaderNodeUVFunc_osjwj") nodes/fragment/47/position = Vector2(-720, 2160) nodes/fragment/48/node = SubResource("VisualShaderNodeInput_ft6xr") nodes/fragment/48/position = Vector2(-1040, 2420) -nodes/fragment/49/node = SubResource("VisualShaderNodeFrame_obdjg") -nodes/fragment/49/position = Vector2(-1640, 1319) nodes/fragment/50/node = SubResource("VisualShaderNodeFloatParameter_obdjg") nodes/fragment/50/position = Vector2(-960, 80) nodes/fragment/51/node = SubResource("VisualShaderNodeSwitch_vh75p") diff --git a/ocean/Ocean2.tres b/ocean/Ocean2.tres index f56fcfa..444abe5 100644 --- a/ocean/Ocean2.tres +++ b/ocean/Ocean2.tres @@ -53,9 +53,9 @@ shader_parameter/wave_time = 7.905 shader_parameter/wave_direction = Vector2(2, 0) shader_parameter/wave_2_direction = Vector2(0, 1) shader_parameter/time_scale = 0.025 -shader_parameter/wave_speed = 0.06 -shader_parameter/noise_scale = 5.005 -shader_parameter/height_scale = 0.16 +shader_parameter/wave_speed = 0.02 +shader_parameter/noise_scale = 8.23 +shader_parameter/height_scale = 0.34 shader_parameter/beers_law = 2.0 shader_parameter/depth_offset = -0.75 shader_parameter/edge_scale = 0.1 diff --git a/ocean/Ocean_playground.tscn b/ocean/Ocean_playground.tscn index 711dbd8..f3eca00 100644 --- a/ocean/Ocean_playground.tscn +++ b/ocean/Ocean_playground.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://hs3a438it6j6"] +[gd_scene load_steps=11 format=3 uid="uid://hs3a438it6j6"] [ext_resource type="Material" uid="uid://djvstk5qjvdan" path="res://ocean/Ocean2.tres" id="1_kiaws"] [ext_resource type="Script" uid="uid://c12fpc7inp27s" path="res://ocean/ocean.gd" id="2_ap626"] @@ -23,21 +23,73 @@ size = Vector2(10, 10) subdivide_width = 100 subdivide_depth = 100 +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ap626"] +transparency = 1 +blend_mode = 3 +shading_mode = 0 +diffuse_mode = 3 +disable_fog = true +albedo_color = Color(0, 0.754224, 0.124756, 1) + +[sub_resource type="SphereMesh" id="SphereMesh_2qsx7"] +material = SubResource("StandardMaterial3D_ap626") +radius = 0.2 +height = 0.4 + +[sub_resource type="GDScript" id="GDScript_ap626"] +script/source = "extends MeshInstance3D +@export var ocean : Ocean #= get_tree().get_nodes_in_group(\"ocean\")[0] + +func _process(_delta): + var depthwater = ocean.get_water_level(Vector3.ZERO) + global_position = Vector3(0.0,depthwater,0.0) +" + [node name="Node3D" type="Node3D"] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_2qsx7") [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 0, 0) +transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 3.48773, 0) shadow_enabled = true [node name="Ocean" type="Node3D" parent="."] -[node name="Water_Tile_01" type="MeshInstance3D" parent="Ocean"] +[node name="Water_Tile_00" type="MeshInstance3D" parent="Ocean"] mesh = SubResource("PlaneMesh_mf4pf") skeleton = NodePath("../..") script = ExtResource("2_ap626") -[node name="Boat" parent="." instance=ExtResource("3_ap626")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.236798, 0) +[node name="Water_Tile_02" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) +mesh = SubResource("PlaneMesh_mf4pf") +skeleton = NodePath("../..") +script = ExtResource("2_ap626") + +[node name="Water_Tile_01" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10) +mesh = SubResource("PlaneMesh_mf4pf") +skeleton = NodePath("../..") +script = ExtResource("2_ap626") + +[node name="Water_Tile_03" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10) +mesh = SubResource("PlaneMesh_mf4pf") +skeleton = NodePath("../..") +script = ExtResource("2_ap626") + +[node name="Water_Tile_04" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0) +mesh = SubResource("PlaneMesh_mf4pf") +skeleton = NodePath("../..") +script = ExtResource("2_ap626") + +[node name="Boat" parent="." node_paths=PackedStringArray("ocean") instance=ExtResource("3_ap626")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.461916, 0) +ocean = NodePath("../Ocean/Water_Tile_00") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." node_paths=PackedStringArray("ocean")] +mesh = SubResource("SphereMesh_2qsx7") +script = SubResource("GDScript_ap626") +ocean = NodePath("../Ocean/Water_Tile_00") diff --git a/ocean/debug.gd b/ocean/debug.gd new file mode 100644 index 0000000..e69de29 diff --git a/ocean/debug.gd.uid b/ocean/debug.gd.uid new file mode 100644 index 0000000..1a09df0 --- /dev/null +++ b/ocean/debug.gd.uid @@ -0,0 +1 @@ +uid://rgck5h3xer7n diff --git a/ocean/ocean.gd b/ocean/ocean.gd index 2e20aec..c537793 100644 --- a/ocean/ocean.gd +++ b/ocean/ocean.gd @@ -13,13 +13,9 @@ var time: float # Called when the node enters the scene tree for the first time. func _ready(): - add_to_group("ocean") + add_to_group("ocean",true) material = mesh.surface_get_material(0) - if material != null: - noise = material.get_shader_parameter("wave").noise.get_seamless_image(512, 512) - noise_scale = material.get_shader_parameter("noise_scale") - wave_speed = material.get_shader_parameter("wave_speed") - height_scale = material.get_shader_parameter("height_scale") + update() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): @@ -32,3 +28,10 @@ func get_water_level(world_position: Vector3) -> float: var pixel_pos = Vector2(uv_x * noise.get_width(), uv_y * noise.get_height()) return global_position.y + noise.get_pixelv(pixel_pos).r * height_scale; + +func update(): + if material != null: + noise = material.get_shader_parameter("wave").noise.get_seamless_image(512, 512) + noise_scale = material.get_shader_parameter("noise_scale") + wave_speed = material.get_shader_parameter("wave_speed") + height_scale = material.get_shader_parameter("height_scale") diff --git a/project.godot b/project.godot index d60e54a..ade0b5d 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="SpilledClone" config/version="0.01" -run/main_scene="uid://cjjrdfywoxwgr" +run/main_scene="uid://hs3a438it6j6" config/features=PackedStringArray("4.4", "Forward Plus") boot_splash/bg_color=Color(0, 0, 0, 1) config/icon="res://icon.svg"