SLIDING!!!!!

This commit is contained in:
2026-01-03 06:30:14 +02:00
parent 22ceab5ecf
commit 66d788b808
5 changed files with 106 additions and 19 deletions

View File

@@ -33,7 +33,6 @@ current_scene="res://Player.tscn"
center_split_offset=0
selected_default_debugger_tab_idx=0
selected_main_editor_idx=2
selected_bottom_panel_item=0
[EditorWindow]

View File

@@ -10,6 +10,7 @@ executable_path="/media/kevin/Drive2/GodotProjects/.editor_config/AGame/Godot_v4
[dialog_bounds]
create_new_node=Rect2(1950, 250, 900, 700)
project_settings=Rect2(1800, 250, 1200, 700)
[recent_files]
@@ -25,3 +26,7 @@ create_built_in_script=false
picker_shape=3
recent_presets=PackedColorArray(0.39210242, 0.58253837, 1, 1, 0, 0, 1, 1, 0.02948817, 0.2666716, 1, 1, 0.0006434119, 0.21836194, 1, 1, 1, 0.28627452, 1, 1, 0.5030338, 0.65093625, 0.96411306, 1, 0.7203012, 0.8066189, 0.98081595, 1, 0.25331905, 0.47389442, 1, 1, 0.6516739, 0.7670327, 1, 1)
[project_settings]
show_builtin_actions=false

View File

@@ -6,7 +6,7 @@ state={
"column": 22,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 14,
"row": 10,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"

View File

@@ -1,9 +1,19 @@
extends CharacterBody3D
@export var mouse_sensitivity = 1
const SPEED = 5.0
const JUMP_VELOCITY = 4.5
# ======== Movement Stuff
const walk_speed = 10.0
var crouch_speed = 5
var slide_speed = 25
var slide_friction = 5
var slide_direction = Vector3.ZERO
const jump_velocity = 4.5
# ========= Cam Stuff
var max_look_up = deg_to_rad(80)
var max_look_down = deg_to_rad(-80)
@@ -11,6 +21,9 @@ var pitch = 0
@onready var camera_pivot = $CameraPivot
# ========= Other Stuff
var is_crouching = false
var is_sliding = false
func _ready() -> void:
mouse_sensitivity = mouse_sensitivity * 0.001
@@ -26,27 +39,64 @@ func _unhandled_input(event: InputEvent) -> void:
camera_pivot.rotation.x = pitch
func _physics_process(delta: float) -> void:
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
velocity.y = jump_velocity
var input_dir = Vector3.ZERO
if Input.is_action_pressed("move_forward"):
input_dir -= transform.basis.z
if Input.is_action_pressed("move_backward"):
input_dir += transform.basis.z
if Input.is_action_pressed("move_left"):
input_dir -= transform.basis.x
if Input.is_action_pressed("move_right"):
input_dir += transform.basis.x
input_dir = input_dir.normalized()
handle_crouch(input_dir, delta)
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
move_and_slide()
func handle_crouch(input_dir:Vector3, delta):
if Input.is_action_just_pressed("crouch") and is_on_floor():
is_crouching = true
if input_dir.length() > 0.1:
start_slide(input_dir)
if Input.is_action_just_released("crouch"):
stop_crouch()
if is_sliding:
velocity.x = slide_direction.x
velocity.z = slide_direction.z
slide_direction = slide_direction.move_toward(Vector3.ZERO, slide_friction * delta)
if slide_direction.length() < 1:
is_sliding= false
elif is_crouching:
velocity.x = input_dir.x * crouch_speed
velocity.z = input_dir.z * crouch_speed
else:
velocity.x = input_dir.x * walk_speed
velocity.z = input_dir.z * walk_speed
func start_slide(input_dir: Vector3):
is_sliding = true
slide_direction = input_dir*slide_speed
func stop_crouch():
is_crouching = false
is_sliding = false

View File

@@ -14,3 +14,36 @@ config/name="AGame"
run/main_scene="uid://d28ms4hn3rgie"
config/features=PackedStringArray("4.5")
config/icon="res://assets/icon.svg"
[input]
move_forward={
"deadzone": 0.2,
"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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
]
}
move_backward={
"deadzone": 0.2,
"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.2,
"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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.2,
"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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.2,
"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
crouch={
"deadzone": 0.2,
"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":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}