highlights enemy and returns to player start location

This commit is contained in:
Derek
2024-08-06 23:34:58 -05:00
parent f8b0cc2964
commit f02c106fe3
9 changed files with 304 additions and 41 deletions

View File

@@ -1,11 +1,24 @@
[gd_scene load_steps=2 format=3 uid="uid://by7qyyhyurlw"]
[gd_scene load_steps=3 format=3 uid="uid://by7qyyhyurlw"]
[ext_resource type="Script" path="res://scripts/dead_cam.gd" id="1_qxtd8"]
[node name="DeadCam" type="Node3D"]
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_ybt8m"]
dof_blur_far_enabled = true
dof_blur_far_distance = 7.0
dof_blur_far_transition = 10.0
dof_blur_near_enabled = true
[node name="DeadCam" type="Node3D" groups=["spawned"]]
script = ExtResource("1_qxtd8")
[node name="Camera3D" type="Camera3D" parent="."]
attributes = SubResource("CameraAttributesPractical_ybt8m")
[node name="LookRay" type="RayCast3D" parent="."]
target_position = Vector3(0, 0, -1)
[node name="Timer" type="Timer" parent="."]
wait_time = 0.5
one_shot = true
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View File

@@ -0,0 +1,8 @@
[gd_resource type="ORMMaterial3D" format=3 uid="uid://46g0pn1jxl2h"]
[resource]
transparency = 1
albedo_color = Color(1, 0, 0, 1)
emission_enabled = true
emission = Color(1, 0, 0, 1)
emission_energy_multiplier = 2.0

File diff suppressed because one or more lines are too long

View File

@@ -1166,7 +1166,6 @@ gun_2 = ExtResource("2_ayfr5")
[node name="Player" parent="." instance=ExtResource("4_4bx26")]
transform = Transform3D(-0.866025, 0, -0.5, 0, 1, 0, 0.5, 0, -0.866025, -16.0295, 1.4435, 12.1166)
weapon_sway_amount = 0.07
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.420794, 0.292511, -0.858703, -0.23587, 0.949309, 0.207791, 0.875956, 0.115105, 0.468458, 0, 0, 0)

View File

@@ -1166,11 +1166,10 @@ money = 10
health = 10
gun_1 = ExtResource("2_6rjit")
gun_2 = ExtResource("3_umpon")
health_drop_enabled = false
[node name="Player" parent="." instance=ExtResource("2_f87c2")]
transform = Transform3D(-0.866025, 0, -0.5, 0, 1, 0, 0.5, 0, -0.866025, -16.0295, 1.4435, 12.1166)
AUDIO = false
weapon_sway_amount = 0.07
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.420794, 0.292511, -0.858703, -0.23587, 0.949309, 0.207791, 0.875956, 0.115105, 0.468458, 0, 0, 0)

View File

@@ -31,12 +31,18 @@ var particle_number = 0
var enemy_hiveminds = []
var remaining_enemies
var last_hit : Node
var respawn_position
var respawn_cam_rotation
var respawn_rot
# Called when the node enters the scene tree for the first time.
func _ready():
#global randomize function
randomize()
respawn_position = player.camera.global_position
respawn_cam_rotation = player.camera.rotation
#clear spawned in objects
for node in get_tree().get_nodes_in_group("spawned"):
node.queue_free()
@@ -125,6 +131,9 @@ func die():
instance_dead.transform.basis = player.global_transform.basis
#instance_dead.camera.rotation = player.camera.rotation
instance_dead.target = last_hit
instance_dead.respawn_position = respawn_position
instance_dead.respawn_rotation = respawn_cam_rotation
instance_dead.respawn_fov = player.camera.fov
get_tree().get_root().add_child(instance_dead)
instance_dead.camera.current = true
player.dead = true

View File

@@ -50,23 +50,25 @@ func _process(delta):
else:
queue_free()
if ray.is_colliding() and !ray.get_collider().is_in_group("player"):
mesh.visible = false
ray.enabled = false
#bullethole effect
var instance_bullethole = bullethole.instantiate()
ray.get_collider().add_child(instance_bullethole)
instance_bullethole.global_transform.origin = ray.get_collision_point()
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3.UP)
#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)
queue_free()
if ray.is_colliding() and ray.is_colliding() != null:
if !ray.get_collider().is_in_group("player"):
mesh.visible = false
ray.enabled = false
#bullethole effect
var instance_bullethole = bullethole.instantiate()
ray.get_collider().add_child(instance_bullethole)
instance_bullethole.global_transform.origin = ray.get_collision_point()
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3.UP)
#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)
queue_free()

View File

@@ -3,30 +3,55 @@ extends Node3D
@export var MOVE_SPEED = 15
@export var CAMERA_LOOK_SPEED = 20
@export var FOV_CHANGE_SPEED = 200
@onready var look_ray = $LookRay
@onready var camera = $Camera3D
@onready var timer = $Timer
@onready var level_control = get_tree().current_scene
var target : Node
var respawn_position
var respawn_rotation
var respawn_fov
var camera_start_fov
var respawn = false
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
camera_start_fov = camera.fov
timer.start()
for i in target.outline_meshes:
print(i)
i.visible = true
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
# Move towards and look at target
#calculate move direction
var target_pos_adjusted = Vector3(target.position.x -2,target.position.y + 4,target.position.z -2)
position = lerp(position,target_pos_adjusted,delta * MOVE_SPEED)
look_ray.look_at(Vector3(target.global_position), Vector3.UP)
camera.rotation = lerp(camera.rotation,look_ray.rotation,delta * CAMERA_LOOK_SPEED)
if target != null and respawn == false:
#calculate move direction
var target_pos_adjusted = Vector3(target.position.x -2,target.position.y + 4,target.position.z -2)
camera.fov = lerp(respawn_fov,10.0,delta * FOV_CHANGE_SPEED)
position = lerp(position,target_pos_adjusted,delta * MOVE_SPEED)
look_ray.look_at(Vector3(target.global_position), Vector3.UP)
camera.rotation = lerp(camera.rotation,look_ray.rotation,delta * CAMERA_LOOK_SPEED)
elif respawn == true:
position = lerp(position,respawn_position,delta * MOVE_SPEED)
camera.rotation = lerp(camera.rotation,respawn_rotation,delta * CAMERA_LOOK_SPEED)
camera.fov = lerp(camera.fov,respawn_fov,delta * FOV_CHANGE_SPEED)
print("dead cam position " + str(position))
print("start position " + str(respawn_position))
if abs(position.x - respawn_position.x) <=.2:
reload_level()
if Input.is_action_just_pressed("escape"):
get_tree().reload_current_scene()
queue_free()
get_tree().quit()
func _on_timer_timeout():
respawn = true
func reload_level():
get_tree().reload_current_scene()

View File

@@ -19,7 +19,6 @@ const MAX_AV = 10
@onready var level_control = get_tree().current_scene
@onready var nav_agent = $NavigationAgent3D
#@onready var target = $body/target
@onready var movement_shape = $MovementShape
@onready var barrel_1 = $TurretLook/Turret/Barrel1
@onready var barrel_2 = $TurretLook/Turret/Barrel2
@@ -32,11 +31,22 @@ const MAX_AV = 10
@onready var spider_look_next = $SpiderLookNext
@onready var body = $body
@onready var audio_fire = $AUIDO/Fire
@onready var turret = $TurretLook/Turret
@onready var turret_material = turret.get_surface_override_material(2)
# OUTLINE MESHES
@onready var turretoutline = $TurretLook/Turret/turretoutline
@onready var foot_1_outline = $body/leg1/foot1/foot1outline
@onready var leg_1_outline = $body/leg1/leg1outline
@onready var foot_2_outline = $body/leg2/foot2/foot2outline
@onready var leg_2_outline = $body/leg2/leg2outline
@onready var foot_3_outline = $body/leg3/foot3/foot3outline
@onready var leg_3_outline = $body/leg3/leg3outline
@onready var foot_4_outline = $body/leg4/foot4/foot4outline
@onready var leg_4_outline = $body/leg4/leg4outline
@onready var bodyoutline = $body/bodyoutline
@export var stamina : Resource
@export var ammo : Resource
@export var money : Resource
@@ -44,6 +54,18 @@ const MAX_AV = 10
@export var die_particles : Resource
@onready var turret_look = $TurretLook
@onready var outline_meshes = [$TurretLook/Turret/turretoutline,
$body/leg1/foot1/foot1outline,
$body/leg1/leg1outline,
$body/leg2/foot2/foot2outline,
$body/leg2/leg2outline,
$body/leg3/foot3/foot3outline,
$body/leg3/leg3outline,
$body/leg4/foot4/foot4outline,
$body/leg4/leg4outline,
$body/bodyoutline]
var gravity = 9.8
var particlespawn
var rng = RandomNumberGenerator.new()
@@ -65,6 +87,7 @@ func _ready():
await get_tree().create_timer(random_time).timeout
postfire_timer.start()
func _process(delta):
# Navigation