cam rotation
This commit is contained in:
parent
62fedcf68a
commit
29a0c0a889
4 changed files with 43 additions and 6 deletions
|
@ -4,7 +4,7 @@ extends Node3D
|
||||||
@onready var move_speed: float = ProjectSettings.get_setting("game/controls/camera_move_speed",20.0)
|
@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)
|
@onready var zoom_speed: float = ProjectSettings.get_setting("game/controls/camera_zoom_speed",20.0)
|
||||||
@export_category("Limits")
|
@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(11,50,1) var zoom_max: float = 20
|
||||||
@export_range(0,0.95,0.01) var zoom_speed_damp: float = 0.5
|
@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 socket: Node3D = $camera_point
|
||||||
@onready var cam : Camera3D = %camera_player
|
@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 move_disabled:bool = false
|
||||||
var zoom_disabled:bool = false
|
var zoom_disabled:bool = false
|
||||||
var edge_scroll_disabled:bool = ProjectSettings.get_setting("game/controls/edge_scrolling_disabled",false)
|
var edge_scroll_disabled:bool = ProjectSettings.get_setting("game/controls/edge_scrolling_disabled",false)
|
||||||
|
var rotation_mode:bool = false
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,6 +31,12 @@ func _process(delta: float) -> void:
|
||||||
cam_move(delta)
|
cam_move(delta)
|
||||||
cam_zoom(delta)
|
cam_zoom(delta)
|
||||||
cam_edge_scroll(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:
|
func _unhandled_input(event: InputEvent) -> void:
|
||||||
|
@ -37,6 +44,12 @@ func _unhandled_input(event: InputEvent) -> void:
|
||||||
zoom_direction = -1
|
zoom_direction = -1
|
||||||
if event.is_action("scroll_down"):
|
if event.is_action("scroll_down"):
|
||||||
zoom_direction = 1
|
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
|
#region Getter
|
||||||
|
@ -72,7 +85,6 @@ func cam_zoom(delta:float) -> void:
|
||||||
if zoom_disabled:return
|
if zoom_disabled:return
|
||||||
|
|
||||||
var new_zoom: float = clamp(cam.position.z + zoom_speed * zoom_direction * delta,zoom_min,zoom_max)
|
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
|
cam.position.z = new_zoom
|
||||||
|
|
||||||
zoom_direction *= zoom_speed_damp #Smooth the deceleration
|
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()
|
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))
|
translate_object_local(Vector3(pan_vector.y,0,pan_vector.x))
|
||||||
|
|
||||||
|
|
||||||
|
func cam_rotation(delta:float) -> void:
|
||||||
|
pass
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -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"]
|
[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"]
|
[node name="player_root" type="Node3D"]
|
||||||
script = ExtResource("1_e571r")
|
script = ExtResource("1_e571r")
|
||||||
|
|
||||||
[node name="camera_point" type="Node3D" parent="."]
|
[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"]
|
[node name="camera_player" type="Camera3D" parent="camera_point"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
|
mesh = SubResource("SphereMesh_ipmo0")
|
||||||
|
|
|
@ -102,6 +102,7 @@ shape = SubResource("ConvexPolygonShape3D_afokq")
|
||||||
|
|
||||||
[node name="player_root" parent="." instance=ExtResource("8_mqp7f")]
|
[node name="player_root" parent="." instance=ExtResource("8_mqp7f")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.6329784, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.6329784, 0, 0)
|
||||||
|
zoom_min = -4.0
|
||||||
zoom_speed_damp = 0.85
|
zoom_speed_damp = 0.85
|
||||||
|
|
||||||
[node name="VoxelGI" type="VoxelGI" parent="."]
|
[node name="VoxelGI" type="VoxelGI" parent="."]
|
||||||
|
|
|
@ -11,6 +11,7 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Kenshi2"
|
config/name="Kenshi2"
|
||||||
|
config/tags=PackedStringArray("games")
|
||||||
run/main_scene="uid://dnmetcwb14svi"
|
run/main_scene="uid://dnmetcwb14svi"
|
||||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
@ -59,7 +60,7 @@ cam_right={
|
||||||
}
|
}
|
||||||
scroll_up={
|
scroll_up={
|
||||||
"deadzone": 0.2,
|
"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={
|
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)
|
"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]
|
[physics]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue