Free camera & shot projection collide with water

This commit is contained in:
Rob Kelly 2024-12-15 17:15:48 -07:00
parent 30dc7050be
commit 7c3a2002b7
5 changed files with 10 additions and 4 deletions

View File

@ -230,7 +230,7 @@ locale/translations=PackedStringArray("res://assets/text/text.en.translation")
[layer_names] [layer_names]
3d_physics/layer_1="Collision Geometry" 3d_physics/layer_1="Collision Geometry"
3d_physics/layer_2="Layer 2" 3d_physics/layer_2="Water"
3d_physics/layer_27="Glass Material" 3d_physics/layer_27="Glass Material"
3d_physics/layer_28="Metal Material" 3d_physics/layer_28="Metal Material"
3d_physics/layer_29="Rock Material" 3d_physics/layer_29="Rock Material"

View File

@ -316,6 +316,7 @@ func _show_shot_projection() -> void:
if not game_ball: if not game_ball:
return return
shot_projection.set_ball(game_ball)
shot_projection.putt_projection = club_type == Club.Type.PUTTER shot_projection.putt_projection = club_type == Club.Type.PUTTER
shot_projection.initial_speed = 1 shot_projection.initial_speed = 1
shot_projection.basis = Basis.from_euler(Vector3(club.angle, 0, 0)) shot_projection.basis = Basis.from_euler(Vector3(club.angle, 0, 0))
@ -324,7 +325,6 @@ func _show_shot_projection() -> void:
tween.tween_property(shot_projection, "initial_speed", shot_speed, CAMERA_SNAP_TIME).set_trans( tween.tween_property(shot_projection, "initial_speed", shot_speed, CAMERA_SNAP_TIME).set_trans(
Tween.TRANS_QUAD Tween.TRANS_QUAD
) )
shot_projection.linear_damp = game_ball.linear_damp
shot_projection.show() shot_projection.show()

View File

@ -574,7 +574,7 @@ loop_animation = 1
[node name="ShotProjection" parent="ArrowPivot" instance=ExtResource("4_ry2ho")] [node name="ShotProjection" parent="ArrowPivot" instance=ExtResource("4_ry2ho")]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, -0.02, 0) transform = Transform3D(1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0)
visible = false visible = false
initial_speed = 50.0 initial_speed = 50.0
time_step = 0.1 time_step = 0.1

View File

@ -27,7 +27,7 @@ const PUTT_ATTRITION := 0.8325 # green?
## Uses continuous collision detection. ## Uses continuous collision detection.
@export var check_collision := true @export var check_collision := true
## Mask for collision checking. ## Mask for collision checking.
@export_flags_3d_physics var collision_mask := 1 @export_flags_3d_physics var collision_mask := 1 | 2
## Bodies excluded from collision checking. ## Bodies excluded from collision checking.
## This should probably include the ball! ## This should probably include the ball!
@export var excluded_bodies: Array[CollisionObject3D] = [] @export var excluded_bodies: Array[CollisionObject3D] = []
@ -61,6 +61,11 @@ var _cached_vel: Vector3
@onready var debug_draw: Control = %DebugDraw @onready var debug_draw: Control = %DebugDraw
func set_ball(ball: GameBall) -> void:
global_position = ball.global_position
linear_damp = ball.linear_damp
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
if not visible: if not visible:
# Don't bother if we're not visible # Don't bother if we're not visible

View File

@ -7,6 +7,7 @@
[node name="FreeCamera" type="CharacterBody3D"] [node name="FreeCamera" type="CharacterBody3D"]
process_mode = 3 process_mode = 3
collision_layer = 0 collision_layer = 0
collision_mask = 3
script = ExtResource("1_3gm3q") script = ExtResource("1_3gm3q")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]