Add projectiles

This commit is contained in:
2026-02-10 18:03:53 -08:00
parent 2f377d2d7a
commit 92b4e8662f
41 changed files with 2170 additions and 42 deletions

View File

@@ -0,0 +1,583 @@
[gd_scene load_steps=67 format=3 uid="uid://igpvnbi8qi6e"]
[ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="1_pk6yq"]
[ext_resource type="Script" uid="uid://ctshiyffvt4y5" path="res://src/system/AttackDataResource.cs" id="2_d874y"]
[ext_resource type="Texture2D" uid="uid://pirfu8nw05gk" path="res://src/vfx/Items Etc/geomantic reactor - fire.png" id="3_6hnq4"]
[sub_resource type="Resource" id="Resource_14f5p"]
script = ExtResource("2_d874y")
Damage = 10
ElementType = 4
metadata/_custom_type_script = "uid://ctshiyffvt4y5"
[sub_resource type="AtlasTexture" id="AtlasTexture_na8n6"]
atlas = ExtResource("3_6hnq4")
region = Rect2(0, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jmyp4"]
atlas = ExtResource("3_6hnq4")
region = Rect2(512, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_knrx4"]
atlas = ExtResource("3_6hnq4")
region = Rect2(1024, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_rf24x"]
atlas = ExtResource("3_6hnq4")
region = Rect2(1536, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lhlyq"]
atlas = ExtResource("3_6hnq4")
region = Rect2(2048, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_i8wsu"]
atlas = ExtResource("3_6hnq4")
region = Rect2(2560, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jtp65"]
atlas = ExtResource("3_6hnq4")
region = Rect2(3072, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5k54x"]
atlas = ExtResource("3_6hnq4")
region = Rect2(3584, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_b52uh"]
atlas = ExtResource("3_6hnq4")
region = Rect2(4096, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_rucep"]
atlas = ExtResource("3_6hnq4")
region = Rect2(4608, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dckm0"]
atlas = ExtResource("3_6hnq4")
region = Rect2(5120, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jxml1"]
atlas = ExtResource("3_6hnq4")
region = Rect2(5632, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_m024w"]
atlas = ExtResource("3_6hnq4")
region = Rect2(6144, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_q6m37"]
atlas = ExtResource("3_6hnq4")
region = Rect2(6656, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_kas34"]
atlas = ExtResource("3_6hnq4")
region = Rect2(7168, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_h24tt"]
atlas = ExtResource("3_6hnq4")
region = Rect2(7680, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_k8mub"]
atlas = ExtResource("3_6hnq4")
region = Rect2(8192, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3m3k7"]
atlas = ExtResource("3_6hnq4")
region = Rect2(8704, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lsm1l"]
atlas = ExtResource("3_6hnq4")
region = Rect2(9216, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_puv8e"]
atlas = ExtResource("3_6hnq4")
region = Rect2(9728, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_l2mrb"]
atlas = ExtResource("3_6hnq4")
region = Rect2(10240, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_tpm5i"]
atlas = ExtResource("3_6hnq4")
region = Rect2(10752, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dodoi"]
atlas = ExtResource("3_6hnq4")
region = Rect2(11264, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_nlnrh"]
atlas = ExtResource("3_6hnq4")
region = Rect2(11776, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_fgwyb"]
atlas = ExtResource("3_6hnq4")
region = Rect2(12288, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dbeta"]
atlas = ExtResource("3_6hnq4")
region = Rect2(12800, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_1cjhh"]
atlas = ExtResource("3_6hnq4")
region = Rect2(13312, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ya6jq"]
atlas = ExtResource("3_6hnq4")
region = Rect2(13824, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_bxdwp"]
atlas = ExtResource("3_6hnq4")
region = Rect2(14336, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_g8ywy"]
atlas = ExtResource("3_6hnq4")
region = Rect2(14848, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lq5u4"]
atlas = ExtResource("3_6hnq4")
region = Rect2(15360, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_6v1bm"]
atlas = ExtResource("3_6hnq4")
region = Rect2(15872, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_fl0ij"]
atlas = ExtResource("3_6hnq4")
region = Rect2(0, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jim64"]
atlas = ExtResource("3_6hnq4")
region = Rect2(512, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_vpwbm"]
atlas = ExtResource("3_6hnq4")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_bskte"]
atlas = ExtResource("3_6hnq4")
region = Rect2(1536, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_s4j2o"]
atlas = ExtResource("3_6hnq4")
region = Rect2(2048, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_urilo"]
atlas = ExtResource("3_6hnq4")
region = Rect2(3072, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_37bll"]
atlas = ExtResource("3_6hnq4")
region = Rect2(3584, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_cy8mr"]
atlas = ExtResource("3_6hnq4")
region = Rect2(5120, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_fshft"]
atlas = ExtResource("3_6hnq4")
region = Rect2(5632, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_6o8c5"]
atlas = ExtResource("3_6hnq4")
region = Rect2(6656, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_d55sk"]
atlas = ExtResource("3_6hnq4")
region = Rect2(7168, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_gkylq"]
atlas = ExtResource("3_6hnq4")
region = Rect2(7680, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ee7kd"]
atlas = ExtResource("3_6hnq4")
region = Rect2(8192, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_b3qih"]
atlas = ExtResource("3_6hnq4")
region = Rect2(8704, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_1lt3o"]
atlas = ExtResource("3_6hnq4")
region = Rect2(9216, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_v6dro"]
atlas = ExtResource("3_6hnq4")
region = Rect2(9728, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_l4r0x"]
atlas = ExtResource("3_6hnq4")
region = Rect2(10240, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_drcv7"]
atlas = ExtResource("3_6hnq4")
region = Rect2(10752, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_b8o3i"]
atlas = ExtResource("3_6hnq4")
region = Rect2(11264, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_6yl5j"]
atlas = ExtResource("3_6hnq4")
region = Rect2(11776, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_wydvp"]
atlas = ExtResource("3_6hnq4")
region = Rect2(12288, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3qmsi"]
atlas = ExtResource("3_6hnq4")
region = Rect2(12800, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_j6cu8"]
atlas = ExtResource("3_6hnq4")
region = Rect2(13312, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_li3kr"]
atlas = ExtResource("3_6hnq4")
region = Rect2(13824, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5wcly"]
atlas = ExtResource("3_6hnq4")
region = Rect2(14336, 512, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_brsyt"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_na8n6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jmyp4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_knrx4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rf24x")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lhlyq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i8wsu")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jtp65")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5k54x")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b52uh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rucep")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dckm0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jxml1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_m024w")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q6m37")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kas34")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h24tt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_k8mub")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3m3k7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lsm1l")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_puv8e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l2mrb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tpm5i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dodoi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nlnrh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fgwyb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dbeta")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1cjhh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ya6jq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bxdwp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g8ywy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lq5u4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6v1bm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fl0ij")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jim64")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vpwbm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bskte")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s4j2o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_urilo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_37bll")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_cy8mr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fshft")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6o8c5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_d55sk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gkylq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ee7kd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b3qih")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1lt3o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_v6dro")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l4r0x")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_drcv7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b8o3i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6yl5j")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wydvp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3qmsi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j6cu8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_li3kr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5wcly")
}, {
"duration": 1.0,
"texture": null
}],
"loop": false,
"name": &"geomantic_fire",
"speed": 24.0
}]
[sub_resource type="SphereShape3D" id="SphereShape3D_kct8n"]
[sub_resource type="Animation" id="Animation_xrn7e"]
resource_name = "fire"
length = 1.11667
step = 0.0166667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.11667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 2.1, 0), Vector3(0, 2.1, -20)]
}
tracks/1/type = "audio"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../AudioStreamPlayer3D")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": null
}],
"times": PackedFloat32Array(0.0333333)
}
tracks/1/use_blend = true
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:animation")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"geomantic_fire"]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".:frame")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 1.11667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [1, 67]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("../ProjectileHitbox/CollisionShape3D:disabled")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.0333333, 0.933333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_8qeb2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 2.1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:animation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"geomantic_fire"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("../ProjectileHitbox/CollisionShape3D:disabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_q8n6h"]
_data = {
&"Fire": SubResource("Animation_xrn7e"),
&"RESET": SubResource("Animation_8qeb2")
}
[node name="FireReactor" type="Node3D"]
script = ExtResource("1_pk6yq")
AttackData = SubResource("Resource_14f5p")
[node name="Bullet" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.1, 0)
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Bullet"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
offset = Vector2(0, 150)
pixel_size = 0.005
billboard = 1
sprite_frames = SubResource("SpriteFrames_brsyt")
animation = &"geomantic_fire"
[node name="ProjectileHitbox" type="Area3D" parent="Bullet"]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 2048
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bullet/ProjectileHitbox"]
shape = SubResource("SphereShape3D_kct8n")
disabled = true
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Bullet"]
unique_name_in_owner = true
[node name="AnimationPlayer" type="AnimationPlayer" parent="Bullet"]
unique_name_in_owner = true
root_node = NodePath("../AnimatedSprite3D")
libraries = {
&"": SubResource("AnimationLibrary_q8n6h")
}