summaryrefslogtreecommitdiffstats
path: root/Ship.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Ship.gd')
-rw-r--r--Ship.gd27
1 files changed, 27 insertions, 0 deletions
diff --git a/Ship.gd b/Ship.gd
index b89e3b9..231057c 100644
--- a/Ship.gd
+++ b/Ship.gd
@@ -2,6 +2,33 @@ extends RigidBody
export var ang_acceleration = 240.0
+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
+
+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
+ else:
+ 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)
+
func _integrate_forces(_state):
var stick = Input.get_axis("ship_right","ship_left")
if stick != 0.0: