ucg-3d/objects/skull.gd
2025-02-24 14:43:31 -05:00

36 lines
1,008 B
GDScript

extends CharacterBody3D
@export var speed: float
@export_range(0,1,1,"or_less","or_greater","radians_as_degrees")
var rotation_speed: float
@export var death_delay: float
@export var sound_pitch_min: float
@export var sound_pitch_max: float
@export_group("Node References")
@export var model: Node3D
@export var death_sound: AudioStreamPlayer3D
func _ready() -> void:
velocity = global_basis.z * speed
rotation = Vector3.ZERO
func _physics_process(delta: float) -> void:
model.global_rotation.y = wrapf(Time.get_ticks_msec() * 0.001 * rotation_speed, 0.0, TAU)
var col = move_and_collide(velocity * delta)
if col:
if col.get_collider() is Player:
queue_free()
velocity = velocity.bounce(col.get_normal())
func _on_player_detector_body_entered(body: Node3D) -> void:
if body is Player:
model.visible = false
death_sound.pitch_scale = randf_range(sound_pitch_min, sound_pitch_max)
death_sound.play()
get_tree().create_timer(death_delay, false, true).timeout.connect(queue_free)