diff --git a/boat/WalkableBoat.gd b/boat/WalkableBoat.gd index 641329b..d36fdfa 100644 --- a/boat/WalkableBoat.gd +++ b/boat/WalkableBoat.gd @@ -39,13 +39,14 @@ func _ready(): func _physics_process(delta): submerged = false - for p in probes: - 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)+")") + if probes.size() != 0.0 && ocean != null: + for p in probes: + 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) diff --git a/boat/boat.tscn b/boat/boat.tscn index 6e4c2e9..2edf074 100644 --- a/boat/boat.tscn +++ b/boat/boat.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=3 uid="uid://babgqvkugifk1"] +[gd_scene load_steps=9 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"] @@ -12,47 +12,101 @@ func _process(_delta): global_rotation = Vector3() " +[sub_resource type="BoxShape3D" id="BoxShape3D_ml88t"] +size = Vector3(7.26611, 1, 4.59143) + +[sub_resource type="BoxShape3D" id="BoxShape3D_vvssr"] +size = Vector3(6.72084, 1, 4.55835) + [sub_resource type="BoxShape3D" id="BoxShape3D_enlnh"] size = Vector3(1.5252, 0.507935, 1) +[sub_resource type="SphereShape3D" id="SphereShape3D_kgk83"] +radius = 0.05 + +[sub_resource type="SphereMesh" id="SphereMesh_ltyy5"] +radius = 0.05 +height = 0.1 + [node name="Boat" type="RigidBody3D"] mass = 10.0 script = ExtResource("1_ml88t") -[node name="Node3D" type="Node3D" parent="."] +[node name="CamRoot" type="Node3D" parent="."] script = SubResource("GDScript_enlnh") -[node name="SpringArm3D" type="SpringArm3D" parent="Node3D"] +[node name="SpringArm3D" type="SpringArm3D" parent="CamRoot"] 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="Node3D/SpringArm3D"] +[node name="Camera3D" type="Camera3D" parent="CamRoot/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")] +[node name="BoatModel" 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="StaticBody3D" type="StaticBody3D" parent="BoatModel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.07084, 0) +collision_layer = 2 +collision_mask = 2 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="BoatModel/StaticBody3D"] +transform = Transform3D(0.980683, 0.195604, -2.91679e-09, -0.195604, 0.980683, -2.95354e-08, -2.91681e-09, 2.95354e-08, 1, -2.4417, 0, -0.221802) +shape = SubResource("BoxShape3D_ml88t") +debug_color = Color(0.957204, 0, 0.533834, 0.42) + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="BoatModel/StaticBody3D"] +transform = Transform3D(0.981846, -0.189678, 1.31729e-07, -1.42446e-07, -4.2867e-08, 1, -0.189678, -0.981846, -6.91077e-08, -2.36454, 0.402162, -2.72342) +shape = SubResource("BoxShape3D_ml88t") +debug_color = Color(0.957204, 0, 0.533834, 0.42) + +[node name="CollisionShape3D3" type="CollisionShape3D" parent="BoatModel/StaticBody3D"] +transform = Transform3D(0.981627, 0.190809, 8.34053e-09, 0, -4.37114e-08, 1, 0.190809, -0.981627, -4.29083e-08, -2.36454, 0.402162, 2.42477) +shape = SubResource("BoxShape3D_ml88t") +debug_color = Color(0.957204, 0, 0.533834, 0.42) + +[node name="CollisionShape3D4" type="CollisionShape3D" parent="BoatModel/StaticBody3D"] +transform = Transform3D(-0.0105242, 0.999945, 4.3709e-08, -3.0245e-16, -4.37114e-08, 1, 0.999945, 0.0105242, 4.60025e-10, -6.39777, 0.645692, 0.0886937) +shape = SubResource("BoxShape3D_vvssr") +debug_color = Color(0.957204, 0, 0.533834, 0.42) + +[node name="CollisionShape3D5" type="CollisionShape3D" parent="BoatModel/StaticBody3D"] +transform = Transform3D(-0.0105242, 0.999945, 4.3709e-08, -3.0245e-16, -4.37114e-08, 1, 0.999945, 0.0105242, 4.60025e-10, 1.40167, 1.45173, -0.401093) +shape = SubResource("BoxShape3D_vvssr") +debug_color = Color(0.957204, 0, 0.533834, 0.42) + [node name="ProbeContainer" type="Node3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.105972, 0) -[node name="Cale2" type="Marker3D" parent="ProbeContainer"] +[node name="CaleR" 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"] +[node name="CaleL" 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"] +[node name="ProueL" 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"] +[node name="ProueR" 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="PoupeR" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.568, 0.0932905, 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="PoupeL" type="Marker3D" parent="ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.568, 0.0932905, -0.25) -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +[node name="FloatingSimBody" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00595701, 0.251318, 0) shape = SubResource("BoxShape3D_enlnh") + +[node name="RigidBody3D" type="RigidBody3D" parent="."] +transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0.0648061, 0.516984, 0) +collision_layer = 2 +collision_mask = 2 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] +shape = SubResource("SphereShape3D_kgk83") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D"] +mesh = SubResource("SphereMesh_ltyy5")