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"]
|
||||
|
||||
[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"]
|
||||
|
||||
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")]
|
||||
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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user