From f7ec57998a1c3d0cf91c1fb017fd5a91bb1e0b96 Mon Sep 17 00:00:00 2001 From: dusoleil Date: Sun, 9 Oct 2022 04:45:45 -0400 Subject: Rework Buoyancy physics Simplify creating a buoyant object to just extending a class and setting the water plane. Implement a new buoyancy estimation that should be a bit more accurate. --- Float.gd | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 Float.gd (limited to 'Float.gd') diff --git a/Float.gd b/Float.gd deleted file mode 100644 index 77ffa95..0000000 --- a/Float.gd +++ /dev/null @@ -1,15 +0,0 @@ -extends Spatial - -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") - 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 - #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) -- cgit v1.2.3