From f8d1f2dc1bd6356c33d023629fbef27f362c7aa2 Mon Sep 17 00:00:00 2001 From: dusoleil Date: Fri, 16 Sep 2022 07:56:20 -0400 Subject: Fix both cameras to follow the boat, but ignore its yaw --- Ship.gd | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'Ship.gd') diff --git a/Ship.gd b/Ship.gd index 231057c..feb5ad2 100644 --- a/Ship.gd +++ b/Ship.gd @@ -2,32 +2,29 @@ extends RigidBody export var ang_acceleration = 240.0 +onready var player_cam_pivot = $"fps_controller" +onready var player_cam = player_cam_pivot.get_node("Camera") +onready var ship_cam_pivot = $"CameraPivot" +onready var ship_cam = ship_cam_pivot.get_node("Camera") + func lock_camera_to_boat(): - var boat = self - var cam = $"CameraPivot" - cam.look_at_from_position(Basis(Vector3.UP*boat.global_transform.basis.get_euler().y) * (boat.global_transform.origin + Vector3.UP*50.0 + Vector3.BACK*70.0), boat.global_transform.origin, Vector3.UP) - var boat_direction = boat.global_transform.basis - boat_direction = Basis(Vector3.UP*boat_direction.get_euler().y) - cam.global_transform.basis = boat_direction - cam.global_transform.origin.y = 50.0 + player_cam_pivot.global_transform.basis = Basis(Vector3.UP*player_cam_pivot.global_transform.basis.get_euler().y) + ship_cam_pivot.global_transform.basis = Basis(Vector3.UP*ship_cam_pivot.global_transform.basis.get_euler().y) func _physics_process(_delta): if Input.is_action_just_pressed("camera_swap"): - var cam = $"CameraPivot/Camera" - if cam.current: - $"/root/Main/fps_controller/Camera".current = true + if ship_cam.current: + player_cam.current = true else: - cam.current = true + ship_cam.current = true lock_camera_to_boat() func _input(event): - var pivot = $"CameraPivot" - var cam = pivot.get_node("Camera") if event is InputEventMouseMotion: - cam.rotation.x += -event.relative.y * Settings.mouse_sens - cam.rotation.x = clamp(cam.rotation.x, -1.2, 1.2) - cam.rotation.y += -event.relative.x * Settings.mouse_sens - cam.rotation.y = wrapf(cam.rotation.y, 0, TAU) + ship_cam.rotation.x += -event.relative.y * Settings.mouse_sens + ship_cam.rotation.x = clamp(ship_cam.rotation.x, -1.2, 1.2) + ship_cam.rotation.y += -event.relative.x * Settings.mouse_sens + ship_cam.rotation.y = wrapf(ship_cam.rotation.y, 0, TAU) func _integrate_forces(_state): var stick = Input.get_axis("ship_right","ship_left") -- cgit v1.2.3