From 79b829e35ae65e3c046e7081aeb2557242e93d24 Mon Sep 17 00:00:00 2001 From: dusoleil Date: Wed, 14 Sep 2022 10:34:36 -0400 Subject: Small correction to buoyancy physics --- Float.gd | 12 +++++------- Main.tscn | 2 ++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Float.gd b/Float.gd index 4cf7dda..37297e4 100644 --- a/Float.gd +++ b/Float.gd @@ -1,17 +1,15 @@ extends Spatial -var linear_drag = 0.99 -var angular_drag = 0.5 +onready var inv_gravity = -ProjectSettings.get_setting("physics/3d/default_gravity_vector") * ProjectSettings.get_setting("physics/3d/default_gravity") func _physics_process(_delta): var parent = get_parent() var water = get_node("/root/Main/Water/MeshInstance") - #self.global_transform.origin.y = water.height(self.global_transform.origin) var height = self.global_transform.origin.y var wave_height = water.height(self.global_transform.origin) if height < wave_height: var pos = self.global_transform.origin-parent.global_transform.origin - var buoyancy = clamp(wave_height-height,0.0,1.0) - parent.add_force(Vector3.UP*9.8*buoyancy, pos) - parent.add_central_force(buoyancy * -parent.linear_velocity * linear_drag) - parent.add_torque(buoyancy * -parent.angular_velocity * angular_drag) + #buoyancy force is weight of the displaced water + #we can estimate it by how deep we are in the water + var buoyancy = inv_gravity * clamp(wave_height-height,0.0,1.0) + parent.add_force(buoyancy, pos) diff --git a/Main.tscn b/Main.tscn index 67d550f..5b62675 100644 --- a/Main.tscn +++ b/Main.tscn @@ -65,6 +65,8 @@ multimesh = SubResource( 16 ) [node name="ShipRigidBody" type="RigidBody" parent="."] collision_layer = 0 collision_mask = 0 +axis_lock_linear_x = true +axis_lock_linear_z = true linear_damp = 2.0 angular_damp = 2.0 -- cgit v1.2.3