tweaked bullet and pick up method

This commit is contained in:
Derek
2024-11-04 19:58:51 -06:00
parent 6a36a53746
commit 818b25417a
6 changed files with 56 additions and 51 deletions

View File

@@ -759,7 +759,6 @@ health_drop_enabled = false
[node name="Player" parent="." instance=ExtResource("9_3usor")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.137423, 1.78365, 12.8627)
AUDIO = false
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_b2qms")

View File

@@ -10,7 +10,7 @@ height = 0.121962
radius = 0.0314789
[node name="casing_2" type="RigidBody3D" groups=["scene_rigidbody", "spawned"]]
collision_layer = 32
collision_layer = 0
collision_mask = 37
mass = 0.1
continuous_cd = true

View File

@@ -4,7 +4,7 @@
[ext_resource type="AudioStream" uid="uid://wd061pl0d7rl" path="res://assets/Audio/deep-low-explosion-SBA-300054677.wav" id="2_ddmln"]
[ext_resource type="Texture2D" uid="uid://dmyn4eq2r12ue" path="res://assets/Models/spider1.albedoRAW.png" id="3_81mhs"]
[ext_resource type="Texture2D" uid="uid://dqhke14ulten2" path="res://assets/Models/spider1.roughnessRAW.png" id="4_ahnbu"]
[ext_resource type="Texture2D" uid="uid://r7awur11yerj" path="res://assets/Models/spider1.gunbarrel.albedo.png" id="4_pb8pm"]
[ext_resource type="Texture2D" uid="uid://b4s3w1qnqcmgq" path="res://assets/Models/spider1.gunbarrel.albedo.png" id="4_pb8pm"]
[ext_resource type="Texture2D" uid="uid://c54kwbix1mo58" path="res://assets/Models/spider1.turret.png" id="5_hogev"]
[ext_resource type="Texture2D" uid="uid://cvi0upsh0e1mu" path="res://assets/Models/spider1.turret.roughness1.png" id="6_0fxbp"]
@@ -257,7 +257,7 @@ points = PackedVector3Array(0.0373867, 0.506736, 0.264769, -0.356717, -0.359168,
script = ExtResource("1_frf2k")
audio_explode = NodePath("Audio/Die")
[node name="RigidBody3D" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
[node name="RigidBody3D" type="RigidBody3D" parent="." groups=["moveable", "scene_rigidbody"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00161432, 1.77527, -0.0469466)
collision_layer = 32
collision_mask = 37
@@ -288,7 +288,7 @@ draw_pass_1 = SubResource("BoxMesh_00qq1")
stream = ExtResource("2_ddmln")
volume_db = 10.0
[node name="body" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
[node name="body" type="RigidBody3D" parent="." groups=["moveable", "scene_rigidbody"]]
collision_layer = 32
collision_mask = 37
mass = 30.0

View File

@@ -1,7 +1,6 @@
[gd_scene load_steps=26 format=3 uid="uid://drwae3loscbw7"]
[gd_scene load_steps=25 format=3 uid="uid://drwae3loscbw7"]
[ext_resource type="Script" path="res://scripts/player.gd" id="1_x7wms"]
[ext_resource type="PackedScene" uid="uid://dcmno6wafk5hg" path="res://assets/dead_player.tscn" id="2_4hoys"]
[ext_resource type="Script" path="res://scripts/recoil.gd" id="3_405jc"]
[ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="3_mbuvp"]
[ext_resource type="Script" path="res://scripts/AmmoCounter.gd" id="4_8cy44"]
@@ -69,7 +68,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.11359, 0)
collision_layer = 6
collision_mask = 11
script = ExtResource("1_x7wms")
dead_player = ExtResource("2_4hoys")
SENSITIVITY = 0.008
BOB_AMP = 0.085
weapon_holder = NodePath("Head/Recoil/Camera3D/WeaponHolder")
@@ -166,7 +164,7 @@ texture = ExtResource("6_5m60e")
script = ExtResource("7_pnp4a")
[node name="BulletRay" type="RayCast3D" parent="Head/Recoil/Camera3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.462246)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.487738)
target_position = Vector3(0, 0, -200)
collision_mask = 5
collide_with_areas = true

View File

@@ -34,38 +34,35 @@ func _physics_process(delta):
if distance_from_player.length() > 1.5:
visible = true
func _on_body_entered(body: Node) -> void:
if !body.is_in_group("player") and bullet_active:
print("BODY HIT - " + str(body))
#Break Breakable Objects
if body.is_in_group("breakable"):
body.breaking(linear_velocity)
if body.is_in_group("switch"):
body.hit()
if ray.is_colliding() and !ray.get_collider().is_in_group("player"):
#Bullet Hole Effect
ray.get_collider().add_child(instance_bullethole)
instance_bullethole.global_transform.origin = ray.get_collision_point()
if (abs(ray.get_collision_normal().y) > 0.99):
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3(0,0,1))
else:
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal())
#Hit Enemies
if ray.get_collider().is_in_group("enemy_target"):
hit_indicator.play()
enemy_particles.emitting = true
SignalBus.emit_signal("enemy_hit")
ray.get_collider().hit(bullet_damage)
if ray.is_colliding() and !ray.get_collider().is_in_group("player"):
mesh.visible = false
bullet_active = false
particles.emitting = true
await get_tree().create_timer(1).timeout
ray.enabled = false
#bullethole effect
ray.get_collider().add_child(instance_bullethole)
instance_bullethole.global_transform.origin = ray.get_collision_point()
if (abs(ray.get_collision_normal().y) > 0.99):
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3(0,0,1))
else:
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal())
if ray.get_collider().is_in_group("switch"):
ray.get_collider().hit()
#move rigidbodies
if ray.get_collider().is_in_group("scene_rigidbody"):
ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod)
if ray.get_collider().is_in_group("breakable"):
var current_velocity = transform.basis * Vector3(0,0,-1 * bullet_force_mod)
ray.get_collider().breaking(current_velocity)
if ray.get_collider().is_in_group("enemy_target"):
hit_indicator.play()
enemy_particles.emitting = true
ray.get_collider().hit(bullet_damage)
await get_tree().create_timer(1.0).timeout
queue_free()

View File

@@ -26,7 +26,6 @@ var rng = RandomNumberGenerator.new()
@export_group("Game Settings")
@export var AUDIO = true
@export var dead_player : Resource
@export_group("Player Movement")
@export var DASH_STAM_REQ = 10
@@ -50,7 +49,7 @@ var start_sensitivity
#@export
var gun : Node
@onready var dead_player : Resource = load("res://assets/dead_cam.tscn")
@onready var pause_menu: Control = $Head/Recoil/Camera3D/PauseMenu
@onready var gun_ray = $Head/Recoil/Camera3D/GunRay
@onready var level_control = get_tree().current_scene
@@ -80,6 +79,7 @@ var held_item_linear_damp_cache
var held_item_angular_damp_cache
var held_item_gravity_cache
var held_item_mass_cache
var held_item_rotation = Vector3(0,0,0)
# Slow Down Variables
var remaining_stamina = MAX_STAMINA
@@ -298,15 +298,22 @@ func _physics_process(delta):
#Weapon Swap Up
if Input.is_action_just_pressed("scroll_up") and !gun.anim_player.is_playing():
if level_control.held_guns.size() > 1:
gun.anim_player.play("swap_out")
level_control.gun_spawn(level_control.current_gun_index + 1)
if held_item == null:
if level_control.held_guns.size() > 1:
gun.anim_player.play("swap_out")
level_control.gun_spawn(level_control.current_gun_index + 1)
else:
held_item_rotation.y += deg_to_rad(45)
#Weapon Swap Down
if Input.is_action_just_pressed("scroll_down") and !gun.anim_player.is_playing():
if level_control.held_guns.size() > 1:
gun.anim_player.play("swap_out")
level_control.gun_spawn(level_control.current_gun_index - 1)
if held_item == null:
if level_control.held_guns.size() > 1:
gun.anim_player.play("swap_out")
level_control.gun_spawn(level_control.current_gun_index - 1)
else:
held_item_rotation.y -= deg_to_rad(45)
# Weapon Swap Number 1
if Input.is_action_just_pressed("numb_1") and !gun.anim_player.is_playing():
weapon_select(0)
@@ -328,7 +335,8 @@ func _physics_process(delta):
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)
held_item.rotation = lerp(held_item.rotation, held_item_rotation, delta)
print("HELD ITEM ROTATION " + str(rad_to_deg(held_item_rotation.y)))
#break when moved too far away
var distance_from_player = abs(self.global_position - held_item.global_position)
@@ -353,6 +361,8 @@ func _physics_process(delta):
if interact_ray.get_collider().is_in_group("scene_rigidbody"):
kick_audio.play()
interact_ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-KICK_AMOUNT)
if held_item != null:
release_moveable()
@@ -435,7 +445,7 @@ func toggle_hud(hud_on):
func grab_moveable(body):
moveable_holder.global_position = body.global_position
held_item = body
held_item_rotation = body.rotation
#cache rigidbody settings
held_item_linear_damp_cache = body.linear_damp
held_item_angular_damp_cache = body.angular_damp
@@ -449,6 +459,7 @@ func grab_moveable(body):
held_item.gravity_scale = 0
func release_moveable():
held_item_rotation = Vector3(0,0,0)
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