Better bullet traces and raycast for hitscan

This commit is contained in:
2025-01-26 10:59:59 +01:00
parent 1c8458048c
commit 7da4a3d6bb
26 changed files with 1444 additions and 292 deletions

View File

@ -0,0 +1,8 @@
[gd_scene format=3 uid="uid://bjyltbtx45cqs"]
[node name="BulletTraceDistance" type="Node3D"]
[node name="Start" type="Node3D" parent="."]
[node name="End" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 300)

View File

@ -0,0 +1,22 @@
extends MeshInstance3D
func init(pos1, pos2):
var draw_mesh := ImmediateMesh.new()
mesh = draw_mesh
draw_mesh.surface_begin(Mesh.PRIMITIVE_LINES, material_override)
draw_mesh.surface_add_vertex(pos1)
draw_mesh.surface_add_vertex(pos2)
draw_mesh.surface_end()
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _on_timer_timeout() -> void:
queue_free()

View File

@ -0,0 +1,20 @@
[gd_scene load_steps=3 format=3 uid="uid://balgqtw1ijpw3"]
[ext_resource type="Script" path="res://scenes/weapon/misc/bullet_trail_generic.gd" id="1_k8eg1"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ybqvs"]
albedo_color = Color(0.934388, 0.967243, 0.955863, 1)
emission = Color(1, 1, 1, 1)
emission_energy_multiplier = 2.7
[node name="BulletTrailGeneric" type="MeshInstance3D"]
material_override = SubResource("StandardMaterial3D_ybqvs")
visibility_range_end = 1891.27
script = ExtResource("1_k8eg1")
[node name="Timer" type="Timer" parent="."]
wait_time = 0.05
one_shot = true
autostart = true
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View File

@ -0,0 +1,3 @@
[gd_scene format=3 uid="uid://bfelcp5dmag5r"]
[node name="MuzzleFlash" type="MeshInstance3D"]