diff --git a/assets/blockout_2.tscn b/assets/blockout_2.tscn index 1509226..b08a142 100644 --- a/assets/blockout_2.tscn +++ b/assets/blockout_2.tscn @@ -645,6 +645,7 @@ 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") diff --git a/assets/bullet.tscn b/assets/bullet.tscn index 2f5cae6..567da7a 100644 --- a/assets/bullet.tscn +++ b/assets/bullet.tscn @@ -84,7 +84,7 @@ collision_mask = 109 axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true -mass = 0.1 +mass = 0.01 center_of_mass_mode = 1 continuous_cd = true contact_monitor = true diff --git a/project.godot b/project.godot index b906beb..148b782 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="First Person Test" -run/main_scene="res://scenes/bullet_test.tscn" +run/main_scene="res://assets/blockout_2.tscn" config/features=PackedStringArray("4.3", "Forward Plus") config/icon="res://icon.svg" diff --git a/scripts/bullet.gd b/scripts/bullet.gd index df5fa00..aef3824 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -38,15 +38,19 @@ func _physics_process(delta): func _on_body_entered(body: Node) -> void: if !body.is_in_group("player"): + 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(): - print("ray collision") - else: - print("no ray collision") mesh.visible = false - if 1>2:#ray.is_colliding() and !ray.get_collider().is_in_group("player"): + 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() @@ -55,19 +59,13 @@ func _on_body_entered(body: Node) -> void: else: instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal()) - #Break Breakable Objects - 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) - #Hit Enemies if ray.get_collider().is_in_group("enemy_target"): hit_indicator.play() enemy_particles.emitting = true ray.get_collider().hit(bullet_damage) + #Switch Switches - if ray.get_collider().is_in_group("switch"): - ray.get_collider().hit() queue_free() diff --git a/scripts/bullet_enemy.gd b/scripts/bullet_enemy.gd index 4cb206e..9e61d82 100644 --- a/scripts/bullet_enemy.gd +++ b/scripts/bullet_enemy.gd @@ -1,5 +1,7 @@ extends Node3D +const recoil_amount : Vector3 = Vector3(.5,.1,.1) + var bullet_speed var bullet_drop var random_spread_amt @@ -42,7 +44,10 @@ func _process(delta): if ray.is_colliding() and ray.get_collider() != null: if ray.get_collider().is_in_group("player"): var player = ray.get_collider() + var snap_amount = 10 + var speed_amount = 10 player.level_control.health -= bullet_damage + player.recoil.add_recoil(recoil_amount,snap_amount,speed_amount) if player.level_control.health <= bullet_damage: player.level_control.last_hit = fired_by diff --git a/scripts/gun.gd b/scripts/gun.gd index 7116c21..b507955 100644 --- a/scripts/gun.gd +++ b/scripts/gun.gd @@ -111,7 +111,7 @@ func shoot(delta): instance_casing.position = casing_ejector.global_position instance_casing.transform.basis = casing_ejector.global_transform.basis get_tree().get_root().add_child(instance_casing) - player.recoil.add_recoil(recoil_amount) + player.recoil.add_recoil(recoil_amount,10,10) if fire_mode != 0: cycle_count -= 1 diff --git a/scripts/player.gd b/scripts/player.gd index 88f1eb9..e1e01cf 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -210,10 +210,11 @@ func _physics_process(delta): #Land Sound if velocity.y < .1 and self.is_on_floor() and moving_fast == true: - print("LAND SOUND") var land_volume = clamp( moving_fast_top_speed - 20 ,-10,0) + var recoil_amount = Vector3(-.1,0,0) land_sound.volume_db = land_volume land_sound.play() + recoil.add_recoil(recoil_amount,10,2) moving_fast_top_speed = 0.0 moving_fast = false diff --git a/scripts/recoil.gd b/scripts/recoil.gd index 7e7c169..4102185 100644 --- a/scripts/recoil.gd +++ b/scripts/recoil.gd @@ -1,8 +1,7 @@ extends Node3D -var recoil_amount : Vector3 = Vector3(.1,0,0) var snap_amount : float = 10 -var speed : float = 4 +var speed : float = 10 var current_rotation : Vector3 var target_rotation : Vector3 @@ -17,7 +16,9 @@ func _process(delta: float) -> void: current_rotation = lerp(current_rotation, target_rotation, snap_amount * delta) basis = Quaternion.from_euler(current_rotation) -func add_recoil(recoil_amount) -> void: +func add_recoil(recoil_amount,snap_change,speed_change) -> void: + snap_amount = snap_change + speed = speed_change var recoil_x = recoil_amount.x var recoil_y = randf_range(-recoil_amount.y,recoil_amount.y) var recoil_z = randf_range(-recoil_amount.z,recoil_amount.z) diff --git a/scripts/revolver_1.gd b/scripts/revolver_1.gd index 623265c..1e23971 100644 --- a/scripts/revolver_1.gd +++ b/scripts/revolver_1.gd @@ -156,7 +156,7 @@ func fire(delta): instance_bullet.player_velocity = player.velocity instance_bullet.instance_bullethole = bullethole.instantiate() get_tree().get_root().add_child(instance_bullet) - player.recoil.add_recoil(recoil_amount) + player.recoil.add_recoil(recoil_amount,10,10) chamber.rotate_object_local(Vector3(0,-1,0),deg_to_rad(60)) func reload(delta): diff --git a/scripts/rocket_launcher.gd b/scripts/rocket_launcher.gd index f1eaac5..b61e346 100644 --- a/scripts/rocket_launcher.gd +++ b/scripts/rocket_launcher.gd @@ -100,7 +100,7 @@ func shoot(delta): instance_bullet.blast_power = blast_power instance_bullet.player_position = player.global_position get_tree().get_root().add_child(instance_bullet) - player.recoil.add_recoil(recoil_amount) + player.recoil.add_recoil(recoil_amount,10,10) if fire_mode != 0: cycle_count -= 1