decent start on picking up objects

This commit is contained in:
derek
2024-11-04 16:59:54 -06:00
parent 3dc841cf86
commit 6a36a53746
9 changed files with 59 additions and 8 deletions

View File

@@ -95,7 +95,7 @@ func _process(delta):
look_ray.global_position = target.global_position
look_ray.look_at(Vector3(level_control.player.global_position), Vector3.UP)
camera.rotation = lerp(camera.rotation,look_ray.rotation,delta * CAMERA_LOOK_SPEED)
camera.fov = lerp(camera.fov, 100.0, delta * 100)
camera.fov = lerp(camera.fov, 100.0, delta * 75)
2:
var target_pos_adjusted = Vector3(target.position.x,target.position.y + 2.1,target.position.z)
cam_target.global_position = lerp(cam_target.global_position,target_pos_adjusted,delta * MOVE_SPEED)

View File

@@ -75,6 +75,11 @@ var current_weapon_index
var recoiling = false
var dead = false
var hud_visible : bool = true
var held_item : Node
var held_item_linear_damp_cache
var held_item_angular_damp_cache
var held_item_gravity_cache
var held_item_mass_cache
# Slow Down Variables
var remaining_stamina = MAX_STAMINA
@@ -105,6 +110,7 @@ var pickupmsg
@onready var kick_audio: AudioStreamPlayer3D = $Head/Recoil/Camera3D/Audio/Kick
@onready var weapon_pickup_audio: AudioStreamPlayer = $Audio/WeaponPickup
@onready var crt_filter: ColorRect = $Head/Recoil/Camera3D/crtFilter
@onready var moveable_holder: Node3D = $Head/MoveableHolder
func _ready():
@@ -318,13 +324,28 @@ func _physics_process(delta):
if Input.is_action_just_pressed("numb_5") and !gun.anim_player.is_playing():
weapon_select(4)
# Move Held Items
if held_item != null:
var held_force_dir = moveable_holder.global_position - held_item.global_position
held_item.set_constant_force(held_force_dir * 30)
#held_item.rotation = lerp(held_item.rotation, rotation, delta)
#break when moved too far away
var distance_from_player = abs(self.global_position - held_item.global_position)
if distance_from_player.length() > 5:
release_moveable()
#interact button
if Input.is_action_just_pressed("interact"):
if interact_ray.is_colliding():
if held_item != null:
release_moveable()
elif interact_ray.is_colliding():
var body = interact_ray.get_collider()
if interact_ray.get_collider().is_in_group("interact"):
var body = interact_ray.get_collider()
body.get_parent().interact()
if interact_ray.get_collider().is_in_group("moveable"):
grab_moveable(body)
#kick
if Input.is_action_just_pressed("kick"):
@@ -411,3 +432,26 @@ func toggle_hud(hud_on):
ammo_counter.visible = hud_on
stamina_counter.visible = hud_on
func grab_moveable(body):
moveable_holder.global_position = body.global_position
held_item = body
#cache rigidbody settings
held_item_linear_damp_cache = body.linear_damp
held_item_angular_damp_cache = body.angular_damp
held_item_gravity_cache = body.gravity_scale
held_item_mass_cache = body.mass
#change rigidbody settings
body.linear_damp = 5
body.angular_damp = 5
body.mass = 1
held_item.gravity_scale = 0
func release_moveable():
held_item.gravity_scale = held_item_gravity_cache
held_item.linear_damp = held_item_linear_damp_cache
held_item.angular_damp = held_item_angular_damp_cache
held_item.mass = held_item_mass_cache
held_item.set_constant_force(Vector3(0,0,0))
held_item = null