tweaks to crouch etc
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user