extends Node3D var bullet_speed var bullet_drop var random_spread_amt var bullet_damage var instance_bullethole var bullet_force_mod = 1.0 var distance_from_player var player_position var player_velocity var bullet_active = true @onready var mesh = $gunbullet1/Cylinder @onready var particles = $GPUParticles3D @onready var enemy_particles = $GPUParticlesEnemy @onready var hit_indicator = $Audio/HitIndicator @onready var ray: RayCast3D = $RayCast3D # Called when the node enters the scene tree for the first time. func _ready(): visible = false # Called every frame. 'delta' is the elapsed time since the previous frame. func _physics_process(delta): position += transform.basis * Vector3(0, 0, -bullet_speed) * delta distance_from_player = abs(self.global_position - player_position) if distance_from_player.length() > 1.5: visible = true if ray.is_colliding() and !ray.get_collider().is_in_group("player"): mesh.visible = false ray.enabled = false await get_tree().create_timer(1.0).timeout queue_free()