added punch animation and can now melee enemies

This commit is contained in:
Derek
2025-01-19 18:20:31 -06:00
parent 5978a90017
commit 4638c97b84
6 changed files with 91 additions and 45 deletions

View File

@@ -112,6 +112,7 @@ var dead_announce = load("res://assets/dead_announce.tscn")
var pickupmsg
var controlled_elsewhere = false
@onready var animation_player: AnimationPlayer = $AnimationPlayer
@onready var crosshair = $Head/Recoil/Camera3D/Crosshair
@onready var head = $Head
@onready var camera = $Head/Recoil/Camera3D
@@ -446,16 +447,8 @@ func _physics_process(delta):
#kick
if Input.is_action_just_pressed("kick"):
if interact_ray.is_colliding():
if interact_ray.get_collider().get_class() == "RigidBody3D":
kick_audio.play()
interact_ray.get_collider().linear_velocity += interact_ray.global_transform.basis * Vector3(0,0, -KICK_AMOUNT)
if held_item != null:
release_moveable()
if held_item != null:
kick_audio.play()
held_item.linear_velocity += interact_ray.global_transform.basis * Vector3(0,0, -KICK_AMOUNT)
release_moveable()
if !animation_player.is_playing():
animation_player.play("punch")
if Input.is_action_just_pressed("kill_self"):
level_control.health = 0
@@ -501,6 +494,21 @@ func joypad_look(delta):
head.rotate_x(-yAxis * JOYSTICK_SENSITIVITY * 1)
head.rotation.x = clamp(head.rotation.x, deg_to_rad(-90), deg_to_rad(85))
func punch():
if interact_ray.is_colliding():
if interact_ray.get_collider().has_method("hit"):
hit_indicator.play()
interact_ray.get_collider().hit(3)
if interact_ray.get_collider().get_class() == "RigidBody3D":
kick_audio.play()
interact_ray.get_collider().linear_velocity += interact_ray.global_transform.basis * Vector3(0,0, -KICK_AMOUNT)
if held_item != null:
release_moveable()
if held_item != null:
kick_audio.play()
held_item.linear_velocity += interact_ray.global_transform.basis * Vector3(0,0, -KICK_AMOUNT)
release_moveable()
func crouch(delta):
if crouched:
crouching_collision.disabled = false
@@ -662,7 +670,8 @@ func pickup_apply(type,ammo_type,value):
func focus_on_target():
if Engine.time_scale < 1:
const BLUR_AMOUNT = .1
camera.attributes.dof_blur_far_enabled = false
camera.attributes.dof_blur_far_enabled = true
camera.attributes.dof_blur_far_distance = camera.global_position.distance_to(bullet_ray.get_collision_point()) + 5.0
camera.attributes.dof_blur_near_enabled = true
camera.attributes.dof_blur_amount = lerp(0.0,BLUR_AMOUNT,1.0 - Engine.time_scale)
else: