Bullet tracers.
parent
68f54b503a
commit
53b32892e2
Binary file not shown.
|
@ -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()
|
|
@ -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
|
@ -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.
|
@ -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)
|
||||
|
|
Reference in New Issue