From 5652e75508bb7f38cdf9b40e95db3b562e0db547 Mon Sep 17 00:00:00 2001 From: derek Date: Wed, 7 Aug 2024 17:01:41 -0500 Subject: [PATCH] started work on camera going red with damage --- assets/player.tscn | 11 ++++++++++- project.godot | 2 +- scenes/enemy_working_scene.tscn | 2 +- scenes/test_level_2v2.tscn | 1 - scripts/DamageNumber.gd | 2 +- scripts/EnemyHivemind1.gd | 5 ++++- scripts/EnemyTarget.gd | 2 +- scripts/LevelManager.gd | 5 ++++- scripts/player.gd | 9 +++++++++ scripts/spider.gd | 7 +++++++ 10 files changed, 38 insertions(+), 8 deletions(-) diff --git a/assets/player.tscn b/assets/player.tscn index d0c3933..b15097f 100644 --- a/assets/player.tscn +++ b/assets/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=3 uid="uid://drwae3loscbw7"] +[gd_scene load_steps=19 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"] @@ -13,6 +13,9 @@ [ext_resource type="AudioStream" uid="uid://bl8yg1d3bsxs3" path="res://assets/Audio/constant-natural-strong-wind-looping-SBA-300062687.wav" id="11_he7p5"] [ext_resource type="AudioStream" uid="uid://cy150nsjqp7lt" path="res://assets/Audio/grunt-male-SBA-300282985.wav" id="12_f51u4"] +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_l5ga0"] +blend_mode = 1 + [sub_resource type="CapsuleMesh" id="CapsuleMesh_n7uf3"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ko22d"] @@ -41,6 +44,12 @@ SENSITIVITY = 0.008 BOB_AMP = 0.085 weapon_holder = NodePath("Head/Camera3D/WeaponHolder") +[node name="HealthIndicator" type="ColorRect" parent="."] +material = SubResource("CanvasItemMaterial_l5ga0") +offset_right = 40.0 +offset_bottom = 40.0 +color = Color(0.470588, 0, 0, 0) + [node name="MeshInstance3D" type="MeshInstance3D" parent="."] visible = false mesh = SubResource("CapsuleMesh_n7uf3") diff --git a/project.godot b/project.godot index 4c7bf98..7288300 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/test_level_2v2.tscn" +run/main_scene="res://scenes/enemy_working_scene.tscn" config/features=PackedStringArray("4.2", "Forward Plus") config/icon="res://icon.svg" diff --git a/scenes/enemy_working_scene.tscn b/scenes/enemy_working_scene.tscn index 2b04ea6..3c90984 100644 --- a/scenes/enemy_working_scene.tscn +++ b/scenes/enemy_working_scene.tscn @@ -35,7 +35,7 @@ albedo_color = Color(0.300579, 0.462784, 0.249767, 1) [node name="EnemyWork" type="Node3D" node_paths=PackedStringArray("player")] script = ExtResource("1_laua1") player = NodePath("Player") -health = 10 +start_health = 10 MAX_PARTICLES = 75 gun_1 = ExtResource("2_poauc") gun_2 = ExtResource("3_xdb5c") diff --git a/scenes/test_level_2v2.tscn b/scenes/test_level_2v2.tscn index 0bd1728..cd18e40 100644 --- a/scenes/test_level_2v2.tscn +++ b/scenes/test_level_2v2.tscn @@ -1163,7 +1163,6 @@ _data = { script = ExtResource("1_orhgl") player = NodePath("Player") money = 10 -health = 10 gun_1 = ExtResource("2_6rjit") gun_2 = ExtResource("3_umpon") health_drop_enabled = false diff --git a/scripts/DamageNumber.gd b/scripts/DamageNumber.gd index a8d3654..e44f556 100644 --- a/scripts/DamageNumber.gd +++ b/scripts/DamageNumber.gd @@ -3,7 +3,7 @@ extends Label3D var damage_amt var start_position -const SPEED = 2 +const SPEED = 3 const SCALE_SPEED = 80 # Called when the node enters the scene tree for the first time. diff --git a/scripts/EnemyHivemind1.gd b/scripts/EnemyHivemind1.gd index fb07535..cae6f6e 100644 --- a/scripts/EnemyHivemind1.gd +++ b/scripts/EnemyHivemind1.gd @@ -16,7 +16,7 @@ func _process(delta): #calculate move position for each child for i in minions: - if i.player != null: + if i.player_in_view == true: #by number of minions determine the amount they should rotate around the player to be evenly distributed number_minions = minions.size() @@ -33,3 +33,6 @@ func _process(delta): var next_nav_point = i.nav_agent.get_next_path_position() i.hive_velocity = (next_nav_point - i.global_transform.origin).normalized() * i.SPEED + elif i.player_in_view != true and i.player_last_seen != null: + i.nav_agent.set_target_position(i.player_last_seen) + diff --git a/scripts/EnemyTarget.gd b/scripts/EnemyTarget.gd index 89ab234..9eee125 100644 --- a/scripts/EnemyTarget.gd +++ b/scripts/EnemyTarget.gd @@ -20,5 +20,5 @@ func hit(bullet_damage): var number_spawn = damage_number.instantiate() number_spawn.damage_amt = bullet_damage * damage - number_spawn.position = global_position + Vector3(0,2,0) + number_spawn.position = global_position + Vector3(0,1,0) get_tree().get_root().add_child(number_spawn) diff --git a/scripts/LevelManager.gd b/scripts/LevelManager.gd index e48e201..3a34dc3 100644 --- a/scripts/LevelManager.gd +++ b/scripts/LevelManager.gd @@ -3,7 +3,7 @@ extends Node3D @export var player : Node @export var money = 250 -@export var health = 3 +@export var start_health = 3 @export var MAX_PARTICLES = 100 @export var gun_1 : Resource @export var gun_2 : Resource @@ -21,6 +21,7 @@ var dead_player = preload("res://assets/dead_cam.tscn") const CLEARED_ANNOUNCE = preload("res://assets/cleared_announce.tscn") const DEAD_ANNOUNCE = preload("res://assets/dead_announce.tscn") +var health = start_health var pickups = [] var held_guns = [] var ammo_current = [0] @@ -40,6 +41,8 @@ func _ready(): #global randomize function randomize() + health = start_health + respawn_position = player.camera.global_position respawn_cam_rotation = player.global_transform.basis diff --git a/scripts/player.gd b/scripts/player.gd index 6c0ea7c..a0841d1 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -76,6 +76,7 @@ var pickupmsg @onready var pickup_sound = $Audio/PickupSound @onready var ear_wind = $Audio/EarWind @onready var hurt_audio = $Audio/Hurt +@onready var health_indicator = $HealthIndicator @onready var weapon_spawner = $Head/Camera3D/WeaponHolder/WeaponSpawner @onready var pick_up_detection = $pick_up_detection @@ -85,6 +86,10 @@ func _ready(): Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) start_sensitivity = SENSITIVITY + var viewportWidth = get_viewport().size.x + var viewportHeight = get_viewport().size.y + health_indicator.size = Vector2(viewportWidth,viewportHeight) + health_indicator.color = Color(0.471, 0, 0, 0) #turn off audio if unchecked in player if AUDIO == false: @@ -152,6 +157,10 @@ func _physics_process(delta): var target_fov = BASE_FOV + FOV_CHANGE * velocity_clamped camera.fov = lerp(camera.fov, target_fov, delta * 8) + # Health Indicator + var health_opacity = 1 - level_control.health / level_control.start_health + health_indicator.color = lerp(Color(0.471, 0, 0, 0), Color(0.471, 0, 0, .25),health_opacity) + # Land sound diff --git a/scripts/spider.gd b/scripts/spider.gd index 8e34cbb..ae29c22 100644 --- a/scripts/spider.gd +++ b/scripts/spider.gd @@ -60,6 +60,8 @@ var body_look_to var distance_to_player var hive_velocity var hive_nav_point +var player_in_view = false +var player_last_seen var knocked = false var stunned = false @@ -75,6 +77,11 @@ func _ready(): func _process(delta): + #Sightline + if turret_look_next.is_colliding() and turret_look_next.get_collider().is_in_group("player"): + player_in_view = true + player_last_seen = turret_look_next.get_collider().global_position + # Navigation if !knocked: if hive_velocity: