cam rotation

This commit is contained in:
Lucas 2025-07-18 01:30:39 +02:00
parent 62fedcf68a
commit 29a0c0a889
4 changed files with 43 additions and 6 deletions

View file

@ -4,7 +4,7 @@ extends Node3D
@onready var move_speed: float = ProjectSettings.get_setting("game/controls/camera_move_speed",20.0)
@onready var zoom_speed: float = ProjectSettings.get_setting("game/controls/camera_zoom_speed",20.0)
@export_category("Limits")
@export_range(-10,10,1) var zoom_min: float = -8
@export_range(-10,10,1) var zoom_min: float = -4
@export_range(11,50,1) var zoom_max: float = 20
@export_range(0,0.95,0.01) var zoom_speed_damp: float = 0.5
@ -14,10 +14,11 @@ extends Node3D
@onready var socket: Node3D = $camera_point
@onready var cam : Camera3D = %camera_player
var zoom_direction : float = 0.0 ## 0.0 means no zoom. Use 1.0 for moving toward the floor
var zoom_direction : float = 0.0 # if different than zero, zoom is happening
var move_disabled:bool = false
var zoom_disabled:bool = false
var edge_scroll_disabled:bool = ProjectSettings.get_setting("game/controls/edge_scrolling_disabled",false)
var rotation_mode:bool = false
#endregion
@ -30,6 +31,12 @@ func _process(delta: float) -> void:
cam_move(delta)
cam_zoom(delta)
cam_edge_scroll(delta)
cam_rotation(delta)
if rotation_mode:
print(Input.get_last_mouse_velocity())
rotation.y += Input.get_last_mouse_velocity().x / 10000 * -1 #TODO: REMOVE MAGIC NUMBERS
print(rotation.z + Input.get_last_mouse_velocity().y / 10000 * -1)
rotation.z = clamp(rotation.z + Input.get_last_mouse_velocity().y / 10000 * -1,-0.75,0.35)
func _unhandled_input(event: InputEvent) -> void:
@ -37,6 +44,12 @@ func _unhandled_input(event: InputEvent) -> void:
zoom_direction = -1
if event.is_action("scroll_down"):
zoom_direction = 1
if event.is_action_pressed("rotation_mode"):
rotation_mode = true
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
if event.is_action_released("rotation_mode"):
rotation_mode = false
Input.mouse_mode = Input.MOUSE_MODE_CONFINED
#region Getter
@ -72,7 +85,6 @@ func cam_zoom(delta:float) -> void:
if zoom_disabled:return
var new_zoom: float = clamp(cam.position.z + zoom_speed * zoom_direction * delta,zoom_min,zoom_max)
print(new_zoom)
cam.position.z = new_zoom
zoom_direction *= zoom_speed_damp #Smooth the deceleration
@ -97,4 +109,8 @@ func cam_edge_scroll(delta:float) -> void:
var pan_vector:= Vector2(pan_direction.x,pan_direction.y) * delta * edge_scrolling_speed * get_zoom_factor()
translate_object_local(Vector3(pan_vector.y,0,pan_vector.x))
func cam_rotation(delta:float) -> void:
pass
#endregion

View file

@ -1,12 +1,25 @@
[gd_scene load_steps=2 format=3 uid="uid://djj1fc8qm10t6"]
[gd_scene load_steps=4 format=3 uid="uid://djj1fc8qm10t6"]
[ext_resource type="Script" uid="uid://c23s1syo7wjm8" path="res://Core/player.gd" id="1_e571r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e571r"]
blend_mode = 1
no_depth_test = true
albedo_color = Color(1, 0, 0.15294115, 1)
proximity_fade_enabled = true
proximity_fade_distance = 2.0
[sub_resource type="SphereMesh" id="SphereMesh_ipmo0"]
material = SubResource("StandardMaterial3D_e571r")
[node name="player_root" type="Node3D"]
script = ExtResource("1_e571r")
[node name="camera_point" type="Node3D" parent="."]
transform = Transform3D(-4.371139e-08, 0.57357645, -0.81915206, 0, 0.81915206, 0.57357645, 1, 2.5071824e-08, -3.5806274e-08, -2, 6.452, 0)
transform = Transform3D(-4.371139e-08, 0.57357645, -0.81915206, 0, 0.81915206, 0.57357645, 1, 2.5071824e-08, -3.5806274e-08, -4.4828167, 2.9061706, -1.0852736e-07)
[node name="camera_player" type="Camera3D" parent="camera_point"]
unique_name_in_owner = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("SphereMesh_ipmo0")

View file

@ -102,6 +102,7 @@ shape = SubResource("ConvexPolygonShape3D_afokq")
[node name="player_root" parent="." instance=ExtResource("8_mqp7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.6329784, 0, 0)
zoom_min = -4.0
zoom_speed_damp = 0.85
[node name="VoxelGI" type="VoxelGI" parent="."]

View file

@ -11,6 +11,7 @@ config_version=5
[application]
config/name="Kenshi2"
config/tags=PackedStringArray("games")
run/main_scene="uid://dnmetcwb14svi"
config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg"
@ -59,7 +60,7 @@ cam_right={
}
scroll_up={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(58, 12),"global_position":Vector2(67, 58),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null)
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
scroll_down={
@ -67,6 +68,12 @@ scroll_down={
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(681, 11),"global_position":Vector2(690, 57),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
rotation_mode={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(98, 12),"global_position":Vector2(107, 60),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null)
, 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":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[physics]