highlights enemy and returns to player start location
This commit is contained in:
@@ -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"]
|
[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")
|
script = ExtResource("1_qxtd8")
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="."]
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
|
attributes = SubResource("CameraAttributesPractical_ybt8m")
|
||||||
|
|
||||||
[node name="LookRay" type="RayCast3D" parent="."]
|
[node name="LookRay" type="RayCast3D" parent="."]
|
||||||
target_position = Vector3(0, 0, -1)
|
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"]
|
||||||
|
|||||||
8
assets/materials/spidermat.tres
Normal file
8
assets/materials/spidermat.tres
Normal 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
@@ -1166,7 +1166,6 @@ gun_2 = ExtResource("2_ayfr5")
|
|||||||
|
|
||||||
[node name="Player" parent="." instance=ExtResource("4_4bx26")]
|
[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)
|
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="."]
|
[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)
|
transform = Transform3D(0.420794, 0.292511, -0.858703, -0.23587, 0.949309, 0.207791, 0.875956, 0.115105, 0.468458, 0, 0, 0)
|
||||||
|
|||||||
@@ -1166,11 +1166,10 @@ money = 10
|
|||||||
health = 10
|
health = 10
|
||||||
gun_1 = ExtResource("2_6rjit")
|
gun_1 = ExtResource("2_6rjit")
|
||||||
gun_2 = ExtResource("3_umpon")
|
gun_2 = ExtResource("3_umpon")
|
||||||
|
health_drop_enabled = false
|
||||||
|
|
||||||
[node name="Player" parent="." instance=ExtResource("2_f87c2")]
|
[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)
|
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="."]
|
[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)
|
transform = Transform3D(0.420794, 0.292511, -0.858703, -0.23587, 0.949309, 0.207791, 0.875956, 0.115105, 0.468458, 0, 0, 0)
|
||||||
|
|||||||
@@ -31,12 +31,18 @@ var particle_number = 0
|
|||||||
var enemy_hiveminds = []
|
var enemy_hiveminds = []
|
||||||
var remaining_enemies
|
var remaining_enemies
|
||||||
var last_hit : Node
|
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.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
#global randomize function
|
#global randomize function
|
||||||
randomize()
|
randomize()
|
||||||
|
|
||||||
|
respawn_position = player.camera.global_position
|
||||||
|
respawn_cam_rotation = player.camera.rotation
|
||||||
|
|
||||||
#clear spawned in objects
|
#clear spawned in objects
|
||||||
for node in get_tree().get_nodes_in_group("spawned"):
|
for node in get_tree().get_nodes_in_group("spawned"):
|
||||||
node.queue_free()
|
node.queue_free()
|
||||||
@@ -125,6 +131,9 @@ func die():
|
|||||||
instance_dead.transform.basis = player.global_transform.basis
|
instance_dead.transform.basis = player.global_transform.basis
|
||||||
#instance_dead.camera.rotation = player.camera.rotation
|
#instance_dead.camera.rotation = player.camera.rotation
|
||||||
instance_dead.target = last_hit
|
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)
|
get_tree().get_root().add_child(instance_dead)
|
||||||
instance_dead.camera.current = true
|
instance_dead.camera.current = true
|
||||||
player.dead = true
|
player.dead = true
|
||||||
|
|||||||
@@ -50,23 +50,25 @@ func _process(delta):
|
|||||||
else:
|
else:
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
if ray.is_colliding() and !ray.get_collider().is_in_group("player"):
|
if ray.is_colliding() and ray.is_colliding() != null:
|
||||||
|
|
||||||
mesh.visible = false
|
if !ray.get_collider().is_in_group("player"):
|
||||||
ray.enabled = false
|
|
||||||
|
|
||||||
#bullethole effect
|
mesh.visible = false
|
||||||
var instance_bullethole = bullethole.instantiate()
|
ray.enabled = false
|
||||||
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
|
#bullethole effect
|
||||||
if ray.get_collider().is_in_group("scene_rigidbody"):
|
var instance_bullethole = bullethole.instantiate()
|
||||||
ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod)
|
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)
|
||||||
|
|
||||||
if ray.get_collider().is_in_group("breakable"):
|
#move rigidbodies
|
||||||
var current_velocity = transform.basis * Vector3(0,0,-1 * bullet_force_mod)
|
if ray.get_collider().is_in_group("scene_rigidbody"):
|
||||||
ray.get_collider().breaking(current_velocity)
|
ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod)
|
||||||
|
|
||||||
queue_free()
|
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()
|
||||||
|
|||||||
@@ -3,30 +3,55 @@ extends Node3D
|
|||||||
|
|
||||||
@export var MOVE_SPEED = 15
|
@export var MOVE_SPEED = 15
|
||||||
@export var CAMERA_LOOK_SPEED = 20
|
@export var CAMERA_LOOK_SPEED = 20
|
||||||
|
@export var FOV_CHANGE_SPEED = 200
|
||||||
|
|
||||||
@onready var look_ray = $LookRay
|
@onready var look_ray = $LookRay
|
||||||
@onready var camera = $Camera3D
|
@onready var camera = $Camera3D
|
||||||
|
@onready var timer = $Timer
|
||||||
|
@onready var level_control = get_tree().current_scene
|
||||||
|
|
||||||
var target : Node
|
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.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
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.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
# Move towards and look at target
|
# Move towards and look at target
|
||||||
|
if target != null and respawn == false:
|
||||||
#calculate move direction
|
#calculate move direction
|
||||||
var target_pos_adjusted = Vector3(target.position.x -2,target.position.y + 4,target.position.z -2)
|
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)
|
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)
|
||||||
look_ray.look_at(Vector3(target.global_position), Vector3.UP)
|
elif respawn == true:
|
||||||
camera.rotation = lerp(camera.rotation,look_ray.rotation,delta * CAMERA_LOOK_SPEED)
|
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"):
|
if Input.is_action_just_pressed("escape"):
|
||||||
get_tree().reload_current_scene()
|
get_tree().quit()
|
||||||
queue_free()
|
|
||||||
|
|
||||||
|
func _on_timer_timeout():
|
||||||
|
respawn = true
|
||||||
|
|
||||||
|
|
||||||
|
func reload_level():
|
||||||
|
get_tree().reload_current_scene()
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ const MAX_AV = 10
|
|||||||
|
|
||||||
@onready var level_control = get_tree().current_scene
|
@onready var level_control = get_tree().current_scene
|
||||||
@onready var nav_agent = $NavigationAgent3D
|
@onready var nav_agent = $NavigationAgent3D
|
||||||
#@onready var target = $body/target
|
|
||||||
@onready var movement_shape = $MovementShape
|
@onready var movement_shape = $MovementShape
|
||||||
@onready var barrel_1 = $TurretLook/Turret/Barrel1
|
@onready var barrel_1 = $TurretLook/Turret/Barrel1
|
||||||
@onready var barrel_2 = $TurretLook/Turret/Barrel2
|
@onready var barrel_2 = $TurretLook/Turret/Barrel2
|
||||||
@@ -32,11 +31,22 @@ const MAX_AV = 10
|
|||||||
@onready var spider_look_next = $SpiderLookNext
|
@onready var spider_look_next = $SpiderLookNext
|
||||||
@onready var body = $body
|
@onready var body = $body
|
||||||
@onready var audio_fire = $AUIDO/Fire
|
@onready var audio_fire = $AUIDO/Fire
|
||||||
|
|
||||||
|
|
||||||
@onready var turret = $TurretLook/Turret
|
@onready var turret = $TurretLook/Turret
|
||||||
@onready var turret_material = turret.get_surface_override_material(2)
|
@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 stamina : Resource
|
||||||
@export var ammo : Resource
|
@export var ammo : Resource
|
||||||
@export var money : Resource
|
@export var money : Resource
|
||||||
@@ -44,6 +54,18 @@ const MAX_AV = 10
|
|||||||
@export var die_particles : Resource
|
@export var die_particles : Resource
|
||||||
@onready var turret_look = $TurretLook
|
@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 gravity = 9.8
|
||||||
var particlespawn
|
var particlespawn
|
||||||
var rng = RandomNumberGenerator.new()
|
var rng = RandomNumberGenerator.new()
|
||||||
@@ -65,6 +87,7 @@ func _ready():
|
|||||||
await get_tree().create_timer(random_time).timeout
|
await get_tree().create_timer(random_time).timeout
|
||||||
postfire_timer.start()
|
postfire_timer.start()
|
||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
|
|
||||||
# Navigation
|
# Navigation
|
||||||
|
|||||||
Reference in New Issue
Block a user