fixed death cam fov and added damage numbers
This commit is contained in:
34
scripts/DamageNumber.gd
Normal file
34
scripts/DamageNumber.gd
Normal file
@@ -0,0 +1,34 @@
|
||||
extends Label3D
|
||||
|
||||
var damage_amt
|
||||
var start_position
|
||||
|
||||
const SPEED = 2
|
||||
const SCALE_SPEED = 80
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
start_position = position
|
||||
|
||||
var rand_scale = randf_range(.5,1.5)
|
||||
|
||||
scale.x = 1 * rand_scale
|
||||
scale.y = 1 * rand_scale
|
||||
text = str(damage_amt)
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
|
||||
|
||||
#scale.x = lerp(0,1,SCALE_SPEED * delta )
|
||||
#scale.y = lerp(0,1,SCALE_SPEED * delta)
|
||||
position.y += SPEED * delta
|
||||
|
||||
var position_diff = clamp((position.y - start_position.y)/5,0,1)
|
||||
|
||||
modulate = Color(1, 1, 1,1 - position_diff)
|
||||
outline_modulate = Color(1, 1, 1, 1 - position_diff)
|
||||
|
||||
if position_diff == 1:
|
||||
queue_free()
|
||||
@@ -2,6 +2,8 @@ extends Area3D
|
||||
|
||||
@export var damage :=1
|
||||
|
||||
var damage_number = preload("res://assets/damage_number.tscn")
|
||||
|
||||
signal body_part_hit(dam,bullet_damage)
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@@ -15,3 +17,8 @@ func _process(delta):
|
||||
|
||||
func hit(bullet_damage):
|
||||
emit_signal("body_part_hit", damage, bullet_damage)
|
||||
|
||||
var number_spawn = damage_number.instantiate()
|
||||
number_spawn.damage_amt = bullet_damage * damage
|
||||
number_spawn.position = global_position + Vector3(0,2,0)
|
||||
get_tree().get_root().add_child(number_spawn)
|
||||
|
||||
@@ -50,7 +50,7 @@ func _process(delta):
|
||||
else:
|
||||
queue_free()
|
||||
|
||||
if ray.is_colliding() and ray.is_colliding() != null:
|
||||
if ray.is_colliding() and ray.get_collider() != null:
|
||||
|
||||
if !ray.get_collider().is_in_group("player"):
|
||||
|
||||
|
||||
@@ -9,8 +9,12 @@ extends Node3D
|
||||
@onready var camera = $Camera3D
|
||||
@onready var timer = $Timer
|
||||
@onready var level_control = get_tree().current_scene
|
||||
@onready var whiteout = $Whiteout
|
||||
@onready var animation_player = $AnimationPlayer
|
||||
|
||||
var focus_dist
|
||||
var target : Node
|
||||
var focus_target
|
||||
var respawn_position
|
||||
var respawn_rotation
|
||||
var respawn_fov
|
||||
@@ -19,35 +23,52 @@ var respawn = false
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
#set FOV
|
||||
camera.fov = respawn_fov
|
||||
|
||||
#start timer
|
||||
timer.start()
|
||||
for i in target.outline_meshes:
|
||||
print(i)
|
||||
i.visible = true
|
||||
|
||||
#highlight target
|
||||
if target != null:
|
||||
for i in target.outline_meshes:
|
||||
i.visible = true
|
||||
|
||||
#set whiteout to size of screen
|
||||
var viewportWidth = get_viewport().size.x
|
||||
var viewportHeight = get_viewport().size.y
|
||||
whiteout.size = Vector2(viewportWidth,viewportHeight)
|
||||
whiteout.color = Color(1, 1, 1, 0)
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
|
||||
var focus_dist = camera.global_position.distance_to(target.global_position)
|
||||
print("focus dist " + str(focus_dist))
|
||||
if target != null:
|
||||
focus_dist = camera.global_position.distance_to(target.global_position)
|
||||
else:
|
||||
focus_dist = 10.0
|
||||
camera.attributes.dof_blur_far_distance = focus_dist + 2
|
||||
camera.attributes.dof_blur_near_distance = focus_dist - 2
|
||||
|
||||
if target == null:
|
||||
respawn = true
|
||||
|
||||
# Move towards and look at target
|
||||
if target != null and respawn == false:
|
||||
if 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,DEAD_CAM_FOV,delta*100)
|
||||
var target_pos_adjusted = Vector3(target.position.x -4,target.position.y + 4,target.position.z -4)
|
||||
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)
|
||||
camera.fov = lerp(camera.fov, 40.0, delta * 5)
|
||||
print(camera.fov)
|
||||
|
||||
elif respawn == true:
|
||||
position = lerp(position,respawn_position,delta * MOVE_SPEED)
|
||||
camera.global_transform.basis = lerp(camera.global_transform.basis,respawn_rotation,delta * CAMERA_LOOK_SPEED)
|
||||
#camera.fov = lerp(DEAD_CAM_FOV,respawn_fov,delta * FOV_CHANGE_SPEED)
|
||||
if abs(position.x - respawn_position.x) <=.2:
|
||||
reload_level()
|
||||
position = lerp(position,respawn_position,delta * MOVE_SPEED * 1.5)
|
||||
camera.global_transform.basis = lerp(camera.global_transform.basis,respawn_rotation,delta * CAMERA_LOOK_SPEED * 1.5)
|
||||
camera.fov = lerp(camera.fov, respawn_fov, delta * 10)
|
||||
if global_position.distance_to(respawn_position) <= .5:
|
||||
animation_player.play("whiteout")
|
||||
|
||||
if Input.is_action_just_pressed("escape"):
|
||||
get_tree().quit()
|
||||
|
||||
21
scripts/level_bounds.gd
Normal file
21
scripts/level_bounds.gd
Normal file
@@ -0,0 +1,21 @@
|
||||
extends Area3D
|
||||
|
||||
@onready var level_control = get_tree().current_scene
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
||||
|
||||
|
||||
func _on_area_exited(area):
|
||||
pass #level_control.die()
|
||||
|
||||
|
||||
|
||||
func _on_body_shape_exited(body_rid, body, body_shape_index, local_shape_index):
|
||||
level_control.die()
|
||||
@@ -16,6 +16,12 @@ const MAX_AV = 10
|
||||
@export var random_spread_amt = .01
|
||||
@export var bullet_damage = 1
|
||||
@export var turret_look_speed = 6
|
||||
@export var stamina : Resource
|
||||
@export var ammo : Resource
|
||||
@export var money : Resource
|
||||
@export var health_pickup : Resource
|
||||
@export var die_particles : Resource
|
||||
@export var damage_number : Resource
|
||||
|
||||
@onready var level_control = get_tree().current_scene
|
||||
@onready var nav_agent = $NavigationAgent3D
|
||||
@@ -33,28 +39,7 @@ const MAX_AV = 10
|
||||
@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
|
||||
@export var health_pickup : Resource
|
||||
@export var die_particles : Resource
|
||||
@onready var turret_look = $TurretLook
|
||||
|
||||
|
||||
@onready var outline_meshes = [$TurretLook/Turret/turretoutline,
|
||||
$body/leg1/foot1/foot1outline,
|
||||
$body/leg1/leg1outline,
|
||||
|
||||
Reference in New Issue
Block a user