diff --git a/project.godot b/project.godot index b51f1a0..99fee8a 100644 --- a/project.godot +++ b/project.godot @@ -16,6 +16,7 @@ run/main_scene="res://scenes/test.tscn" config/use_custom_user_dir=true config/custom_user_dir_name="Batrix" config/features=PackedStringArray("4.3", "Forward Plus") +run/max_fps=60 boot_splash/bg_color=Color(0, 0, 0, 1) boot_splash/show_image=false config/icon="res://icon.svg" diff --git a/scenes/test.tscn b/scenes/test.tscn index c67243c..bf60d17 100644 --- a/scenes/test.tscn +++ b/scenes/test.tscn @@ -9,6 +9,8 @@ [node name="Test" type="Node"] [node name="Player" parent="." instance=ExtResource("2_f4ehn")] +process_priority = -1 +process_physics_priority = -1 [node name="Geometry" type="Node" parent="."] @@ -31,6 +33,8 @@ shadow_blur = 6.0 environment = SubResource("Environment_wctar") [node name="MainCamera" type="Camera3D" parent="."] +process_priority = 100 +process_physics_priority = 100 transform = Transform3D(0.866025, -0.321394, 0.383022, 0, 0.766044, 0.642788, -0.5, -0.55667, 0.663414, 4.894, 6.43, 6.963) current = true fov = 20.0 diff --git a/scripts/camera/main_camera.gd b/scripts/camera/main_camera.gd index 9446fad..ceba068 100644 --- a/scripts/camera/main_camera.gd +++ b/scripts/camera/main_camera.gd @@ -14,16 +14,18 @@ func _ready() -> void: func _process(_delta: float) -> void: + _follow() + + +func _follow() -> void: var player_position := Referencer.player.global_position if Referencer.player.is_on_floor(): _floor_height = player_position.y player_position.y = _floor_height - var mouse_pos := get_viewport().get_mouse_position() - var aim_position := Player.mouse_project(mouse_pos, player_position, self) - - var aim_relative := aim_position - player_position - var follow_position := player_position + aim_relative * aim_offset_factor + var follow_position := ( + player_position + Referencer.player.aim_offset * aim_offset_factor + ) global_rotation_degrees = angle_degrees global_position = ( diff --git a/scripts/player.gd b/scripts/player.gd index b5202a0..c23456f 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -10,7 +10,7 @@ const FALL_ACCELERATION: float = 25 @export var _respawn_height: float = -5 -var aim_position: Vector3 +var aim_offset: Vector3 var _respawn_point: Vector3 var _floor_height: float = 0 @@ -22,8 +22,7 @@ func _ready() -> void: func _process(_delta: float) -> void: - _mouse_aiming() - look_at(aim_position, Vector3.UP, true) + call_deferred("_mouse_aiming") _process_respawning() @@ -38,7 +37,7 @@ func _physics_process(delta: float) -> void: move_and_slide() -static func mouse_project( +func _mouse_project( mouse_pos: Vector2, player_pos: Vector3, camera: Camera3D ) -> Vector3: var from := camera.project_ray_origin(mouse_pos) @@ -57,8 +56,10 @@ func _mouse_aiming() -> void: _floor_height = player_position.y player_position.y = _floor_height var camera := Referencer.main_camera - aim_position = mouse_project(mouse_pos, player_position, camera) + var aim_position := _mouse_project(mouse_pos, player_position, camera) + aim_offset = aim_position - player_position aim_position.y = global_position.y + look_at(aim_position, Vector3.UP, true) func _process_respawning() -> void: