SLIDING!!!!!
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user