30 lines
851 B
GDScript
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()
|