tojam20-elevator/scenes/survivor.gd

39 lines
1.2 KiB
GDScript

extends CharacterBody3D
const CHASE_SHORT_1 := preload("res://audio/Shortchase1.wav")
const CHASE_SHORT_2 := preload("res://audio/Shortchase2.wav")
const CHASE_MID := preload("res://audio/Midchase1.wav")
const CHASE_LONG := preload("res://audio/Chase1.wav")
const CHASE_TRACKS := [CHASE_SHORT_1, CHASE_SHORT_2, CHASE_MID, CHASE_LONG]
static var _last_chase: AudioStream = null
var speed: int = 3
var clumsiness: int = 0
@onready var safety_zone = get_node("/root/Game/World/ElevatorSafeZone")
#func start(xform):
#transform = xform
#velocity = (-xform.basis.z * speed).rotated(Vector3.UP, randf_range(-PI/4, PI/4))
func _ready():
var candidates: Array = CHASE_TRACKS.filter(func(s): return s != _last_chase)
var stream: AudioStream = candidates[randi() % candidates.size()]
_last_chase = stream
$ScreamPlayer.stream = stream
var delay := randf_range(0.0, 0.5)
get_tree().create_timer(delay).timeout.connect(
func(): $ScreamPlayer.play(),
CONNECT_ONE_SHOT
)
func _physics_process(delta):
velocity.z -= speed * delta
move_and_slide()
func _on_area_3d_area_entered(area: Area3D) -> void:
var safety = safety_zone
if area == safety:
print("Safe!")
queue_free()