Files
fmm/game/bullet.gd

30 lines
851 B
GDScript

extends Node3D
const SPEED = 80.0
@onready var raycast = $bullet/RayCast3D
@onready var bullet_decal = preload("res://bullet_decal.tscn")
func _ready() -> void:
pass
func _process(delta: float) -> void:
var next_pos = position + transform.basis * Vector3(0,0,-SPEED) * delta
raycast.visible = true
raycast.target_position = raycast.position + raycast.transform.basis * Vector3(0,0,SPEED) * delta * 1.5
position = next_pos
var collider = raycast.get_collider()
var col_point = raycast.get_collision_point()
if col_point and collider:
var b = bullet_decal.instantiate()
raycast.get_collider().add_child(b)
b.global_transform.origin = col_point
b.look_at(col_point + raycast.get_collision_normal(), Vector3.UP)
b.particles.emitting = true
b.smoke.emitting = true
queue_free()
func _on_timer_timeout() -> void:
queue_free()