Bullet tracers.

remotes/1705382094874458415/tmp_refs/heads/godot4-port
unfa 2020-09-18 01:09:54 +02:00
parent 68f54b503a
commit 53b32892e2
7 changed files with 1243 additions and 1 deletions

Binary file not shown.

View File

@ -0,0 +1,19 @@
extends Spatial
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
translate_object_local(Vector3(0,4,0))
func _on_Raycast_body_entered(body):
queue_free()

View File

@ -0,0 +1,122 @@
{
"asset" : {
"generator" : "Khronos glTF Blender I/O v1.3.48",
"version" : "2.0"
},
"scene" : 0,
"scenes" : [
{
"name" : "Scene",
"nodes" : [
0
]
}
],
"nodes" : [
{
"mesh" : 0,
"name" : "Sphere"
}
],
"materials" : [
{
"doubleSided" : true,
"emissiveFactor" : [
1,
0.6177892684936523,
0.07687932252883911
],
"name" : "BulletTracerMaterial",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0,
0,
0,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0
}
}
],
"meshes" : [
{
"name" : "Sphere",
"primitives" : [
{
"attributes" : {
"POSITION" : 0,
"NORMAL" : 1,
"TEXCOORD_0" : 2
},
"indices" : 3,
"material" : 0
}
]
}
],
"accessors" : [
{
"bufferView" : 0,
"componentType" : 5126,
"count" : 26,
"max" : [
0.08660250902175903,
0.07499998807907104,
0.10000002384185791
],
"min" : [
-0.08660256862640381,
-0.07499998807907104,
-10.209983825683594
],
"type" : "VEC3"
},
{
"bufferView" : 1,
"componentType" : 5126,
"count" : 26,
"type" : "VEC3"
},
{
"bufferView" : 2,
"componentType" : 5126,
"count" : 26,
"type" : "VEC2"
},
{
"bufferView" : 3,
"componentType" : 5123,
"count" : 72,
"type" : "SCALAR"
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteLength" : 312,
"byteOffset" : 0
},
{
"buffer" : 0,
"byteLength" : 312,
"byteOffset" : 312
},
{
"buffer" : 0,
"byteLength" : 208,
"byteOffset" : 624
},
{
"buffer" : 0,
"byteLength" : 144,
"byteOffset" : 832
}
],
"buffers" : [
{
"byteLength" : 976,
"uri" : "data:application/octet-stream;base64,0MxMstDMTKUYXCPBqFyxPcjMzDGQp/m9sFwxPZiZmb2Qp/m9mFGMPYBbmbLAJzA8oFEMPRAKc73AJzA8AAAAANDMTKXQzMw90MxMstDMTKUYXCPBsFwxvZiZmb2Qp/m9mFEMvRAKc73IJzA8AAAAANDMTKXQzMw90MxMstDMTKUYXCPBsFyxvcjMzLGQp/m9mFGMvVCwELLQJzA8AAAAANDMTKXQzMw90MxMstDMTKUYXCPBsFwxvZiZmT2Qp/m9mFEMvRAKcz3YJzA8AAAAANDMTKXQzMw90MxMstDMTKUYXCPBsFwxvZiZmT2Qp/m9sFwxPZiZmT2Qp/m9mFEMvRAKcz3YJzA8oFEMPRAKcz3IJzA8AAAAANDMTKXQzMw90MxMstDMTKUYXCPBAAAAANDMTKXQzMw9AAAAAAAAAAAAAIC//39/PwAAAAD8AX49/33/PrtFXb/8AX493vluPwAAAABvjbc+3vnuPp71Tr9vjbc+AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC//33/vrtFXb/8AX493vnuvp71Tr9vjbc+AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC//39/vwAAAAD8AX493vluvwAAAABvjbc+AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC//33/vrtFXT/8AX493vnuvp71Tj9vjbc+AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC//33/vrtFXT/8AX49/33/PrtFXT/8AX493vnuvp71Tj9vjbc+3vnuPp71Tj9vjbc+AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIA/VVUVPwAAgD+rqio/q6oqPwAAAD+rqio/qqoqP6yqqj4AAAA/rKqqPlVVFT8AAAAAVVXVPgAAgD+rqqo+q6oqP6qqqj6sqqo+VVXVPgAAAAAAAIA+AACAP6yqKj6rqio/qqoqPqyqqj4AAIA+AAAAAKyqqj0AAIA/AAAAAKuqKj8AAAAArKqqPqyqqj0AAAAAq6pqPwAAgD///38/q6oqP1VVVT+rqio///9/P6yqqj5VVVU/rKqqPquqaj8AAAAAAQBAPwAAgD///z8/AAAAAAAAAQACAAEAAwAEAAEABAACAAMABQAEAAYAAgAHAAIABAAIAAIACAAHAAQACQAIAAoABwALAAcACAAMAAcADAALAAgADQAMAA4ACwAPAAsADAAQAAsAEAAPAAwAEQAQABIAEwAUABMAFQAWABMAFgAUABUAFwAWABgAFAABABQAFgADABQAAwABABYAGQADAA=="
}
]
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Assets/Effects/BulletTracer.gd" type="Script" id=1]
[ext_resource path="res://Assets/Effects/BulletTracer.gltf" type="PackedScene" id=2]
[sub_resource type="RayShape" id=1]
length = 3.0
[node name="BulletTracer" type="Spatial"]
script = ExtResource( 1 )
[node name="BulletTracer" parent="." instance=ExtResource( 2 )]
transform = Transform( 0.3, 0, 0, 0, -4.88762e-08, 0.3, 0, -0.3, -4.88762e-08, 0, 0, 0 )
[node name="Raycast" type="Area" parent="BulletTracer"]
transform = Transform( 3.32303, 0, 0, 0, 3.32303, 0, 0, 0, 3.32303, 0.00196616, -7.94729e-07, -9.38667 )
input_ray_pickable = false
monitorable = false
[node name="CollisionShape" type="CollisionShape" parent="BulletTracer/Raycast"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00372178, -6.92157e-07, 2.79426 )
shape = SubResource( 1 )
[connection signal="body_entered" from="BulletTracer/Raycast" to="." method="_on_Raycast_body_entered"]
[editable path="BulletTracer"]

Binary file not shown.

View File

@ -1,6 +1,7 @@
extends Spatial
var casing = preload("res://Assets/Weapons/Handgun/Casing.tscn")
var tracer = preload("res://Assets/Effects/BulletTracer.tscn")
# Declare member variables here. Examples:
# var a = 2
@ -24,10 +25,22 @@ remote func shoot():
casing_instance.angular_velocity = Vector3(rand_range(0, 40), 0, 0)
casing_instance.linear_velocity = Vector3(rand_range(0, 1), 5, 0)
get_tree().root.call_deferred("add_child", casing_instance)
var tracer_instance = tracer.instance()
tracer_instance.global_transform = find_node("Muzzle").global_transform
get_tree().root.call_deferred("add_child", tracer_instance)
#tracer_instance.rotate_object_local(Vector3.AXIS_Y, PI/4)
#tracer_instance.angular_velocity = Vector3(rand_range(0, 40), 0, 0)
#tracer_instance.linear_velocity = Vector3(rand_range(0, 1), 5, 0)
# TODO - fix casing rotation
# TODO - apply initial linear and angular velocity
get_tree().root.call_deferred("add_child", casing_instance)
$Handgun/AnimationPlayer.stop()
$Handgun/AnimationPlayer.play("Shoot", -1, 2)