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

@@ -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