aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/project.godot10
-rw-r--r--client/scripts/follow_camera.gd13
2 files changed, 22 insertions, 1 deletions
diff --git a/client/project.godot b/client/project.godot
index 9a608b93..610efe44 100644
--- a/client/project.godot
+++ b/client/project.godot
@@ -51,6 +51,16 @@ rotate_right={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
+rotate_up={
+"deadzone": 0.5,
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null)
+]
+}
+rotate_down={
+"deadzone": 0.5,
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null)
+]
+}
[rendering]
diff --git a/client/scripts/follow_camera.gd b/client/scripts/follow_camera.gd
index b49bdc2b..524ae9bc 100644
--- a/client/scripts/follow_camera.gd
+++ b/client/scripts/follow_camera.gd
@@ -3,13 +3,20 @@ extends Camera3D
const ROTATE_SPEED: float = 1.5
const ROTATE_WEIGHT: float = 8.0
+const ROTATE_UP_SPEED: float = 0.7
+const ROTATE_UP_WEIGHT: float = 4.0
+const ANGLE_UP_MIN: float = 0.5
+const ANGLE_UP_MAX: float = 1.2
const LOOK_WEIGHT: float = 8.0
const MOVE_WEIGHT: float = 2.0
+const CAMERA_DISTANCE: float = 10
@export var target: Node3D
var angle_target: float = 0
var angle: float = 0
+var angle_up_target: float = 1
+var angle_up: float = 1
var ground: Vector3
func _ready():
@@ -34,5 +41,9 @@ func follow(delta):
angle_target += Input.get_axis("rotate_left", "rotate_right") * ROTATE_SPEED * delta
angle = lerp_angle(angle, angle_target, delta * ROTATE_WEIGHT)
+ angle_up_target += Input.get_axis("rotate_down", "rotate_up") * ROTATE_UP_SPEED * delta
+ angle_up_target = clamp(angle_up_target, ANGLE_UP_MIN, ANGLE_UP_MAX)
+ angle_up = lerp_angle(angle_up, angle_up_target, delta * ROTATE_UP_WEIGHT)
+
ground = ground.lerp(target.position, delta * MOVE_WEIGHT)
- position = ground + Vector3(0, 7.5, 7.5).rotated(Vector3.UP, angle)
+ position = ground + Vector3(0, sin(angle_up) * CAMERA_DISTANCE, cos(angle_up) * CAMERA_DISTANCE).rotated(Vector3.UP, angle)