diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-06-22 16:06:34 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 19:28:31 +0200 | 
| commit | f57a0f0b1e202efbaa4bf83afdfb3097bae62420 (patch) | |
| tree | 11debb3411202664fec815d160546ef4fa1781ea | |
| parent | 0f7a1e3bddafc175f1084cc3c2b4e3d91426dbd9 (diff) | |
| download | hurrycurry-f57a0f0b1e202efbaa4bf83afdfb3097bae62420.tar hurrycurry-f57a0f0b1e202efbaa4bf83afdfb3097bae62420.tar.bz2 hurrycurry-f57a0f0b1e202efbaa4bf83afdfb3097bae62420.tar.zst | |
variable altitude camera
| -rw-r--r-- | client/project.godot | 10 | ||||
| -rw-r--r-- | client/scripts/follow_camera.gd | 13 | 
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) | 
