tweaks to crouch etc

This commit is contained in:
Derek
2024-12-05 23:12:48 -06:00
parent 5d9bac5292
commit d0b247d2c0
11 changed files with 92 additions and 43 deletions

View File

@@ -1,14 +1,17 @@
extends CharacterBody3D
const JUMP_VELOCITY = 5
const WALK_TRANSITION_SPEED = 7
const MAX_AIR_DASH = 1
const FLASHLIGHT_BRIGHTNESS = 30
const KICK_AMOUNT = 20
const LAND_CAMERA_TILT : Vector3 = Vector3(-1,0,0)
const WALK_SPEED = 12.0
const CROUCH_SPEED = 6.0
const CROUCH_SPEED = 3.0
const SPRINT_SPEED = 15.0
const DASH_SPEED = 40
const CROUCHED_POS = Vector3(0,-.1,0)
const STAND_POS = Vector3(0,0.889,0)
const SLOWSPEED = .1
const MAX_STAMINA : float = 100
const STAMINA_DRAIN = 100 #multiplied times the delta when draining
@@ -31,7 +34,6 @@ var mouse_input : Vector2
@export_group("Player Movement")
@export var DASH_STAM_REQ = 10
@export var JUMP_VELOCITY = 6
@export var SENSITIVITY = .01
@export var sensitivity_shift = true
var start_sensitivity
@@ -76,10 +78,9 @@ var held_item_angular_damp_cache
var held_item_gravity_cache
var held_item_mass_cache
var held_item_collision_cache
var hold_offset
var held_item_rotation = Vector3(0,0,0)
var gamespeed_controlled = false
var crouched_pos = Vector3(0,0,0)
var stand_pos = Vector3(0,0.889,0)
var crouched = false
# Slow Down Variables
@@ -119,6 +120,10 @@ var controlled_elsewhere = false
@onready var r_hand_test: MeshInstance3D = $Head/Recoil/Camera3D/WeaponHolder/RHandTest
@onready var enemy_killed_audio: AudioStreamPlayer = $Audio/EnemyKilled
@onready var footstep_sound: AudioStreamPlayer3D = $Audio/FootstepSound
@onready var standing_collision: CollisionShape3D = $StandingCollision
@onready var crouching_collision: CollisionShape3D = $CrouchingCollision
@onready var crouch_check: RayCast3D = $CrouchingCollision/CrouchCheck
@onready var hit_head: AudioStreamPlayer3D = $Audio/HitHead
func _ready():
@@ -177,13 +182,23 @@ func _physics_process(delta):
# Handle jump.
if Input.is_action_just_pressed("jump") and is_on_floor() and !is_climbing:
velocity.y += JUMP_VELOCITY
crouched = false
elif Input.is_action_just_pressed("jump") and double_jump == true and !is_climbing:
velocity.y += JUMP_VELOCITY
double_jump = false
if Input.is_action_just_pressed("crouch"):
crouched = !crouched
if crouched:
if !crouch_check.is_colliding():
crouched = !crouched
recoil.add_recoil(Vector3(-.2,.01,.01),5,10)
else:
recoil.add_recoil(Vector3(-.2,.01,.01),20,10)
hit_head.play()
else:
crouched = !crouched
recoil.add_recoil(Vector3(.2,0,0),5,10)
# Get the input direction and handle the movement/deceleration.
@@ -371,12 +386,16 @@ func _physics_process(delta):
func crouch(delta):
if crouched:
if head.position != crouched_pos:
head.position = lerp(head.position, crouched_pos, delta * 8)
crouching_collision.disabled = false
standing_collision.disabled = true
if head.position != CROUCHED_POS:
head.position = lerp(head.position, CROUCHED_POS, delta * 8)
speed = CROUCH_SPEED
else:
if head.position != stand_pos:
head.position = lerp(head.position, stand_pos, delta * 8)
standing_collision.disabled = false
crouching_collision.disabled = true
if head.position != STAND_POS:
head.position = lerp(head.position, STAND_POS, delta * 8)
speed = WALK_SPEED
func _headbob(time) -> Vector3:
@@ -422,10 +441,11 @@ func weapon_sway(delta):
func weapon_bob(vel : float, delta):
if weapon_holder:
if vel > 2 and is_on_floor():
var speed_adjust = speed/WALK_SPEED
var bob_amount : float = 0.05
var bob_freq : float = 0.01
weapon_holder.position.y = lerp(weapon_holder.position.y, def_weapon_holder_pos.y + sin(Time.get_ticks_msec() * bob_freq) * bob_amount, 10 * delta)
weapon_holder.position.x = lerp(weapon_holder.position.x, def_weapon_holder_pos.x + sin(Time.get_ticks_msec() * bob_freq) * bob_amount, 10 * delta)
var bob_freq : float = 0.01 * speed_adjust
weapon_holder.position.y = lerp(weapon_holder.position.y, def_weapon_holder_pos.y + sin(Time.get_ticks_msec() * bob_freq) * bob_amount, speed * delta)
weapon_holder.position.x = lerp(weapon_holder.position.x, def_weapon_holder_pos.x + sin(Time.get_ticks_msec() * bob_freq) * bob_amount, speed * delta)
else:
weapon_holder.position.y = lerp(weapon_holder.position.y, def_weapon_holder_pos.y, .1 * delta)
weapon_holder.position.x = lerp(weapon_holder.position.x, def_weapon_holder_pos.x, .1 * delta)
@@ -467,6 +487,7 @@ func grab_moveable(body):
held_item_gravity_cache = body.gravity_scale
held_item_mass_cache = body.mass
held_item_collision_cache = held_item.get_collision_layer_value(1)
hold_offset = held_item.global_position - interact_ray.get_collision_point()
#change rigidbody settings
body.linear_damp = 0 #5
body.angular_damp = 0 #5
@@ -478,8 +499,7 @@ func hold_item(_delta):
# Move Held Items
if held_item != null:
interact_ray.look_at(held_item.global_position, Vector3.UP)
var hold_offset = held_item.global_position - interact_ray.get_collision_point()
var held_dir = (moveable_holder.global_position - held_item.global_position) + hold_offset
var held_dir = (moveable_holder.global_position - held_item.global_position) #+ hold_offset
held_item.linear_velocity = held_dir * 15
held_item.look_at(moveable_rotation.global_position, Vector3.UP)
@@ -499,6 +519,7 @@ func release_moveable():
held_item.mass = held_item_mass_cache
held_item.set_collision_layer_value(1,held_item_collision_cache)
held_item = null
hold_offset = null
moveable_holder.rotation = Vector3(0,0,0)
func hit(damage, fired_by, target_type):
@@ -522,5 +543,6 @@ func save():
"rot_y" : rotation.y,
"rot_z" : rotation.z,
"health" : level_control.health
}
return save_dict