diff --git a/DungeonShooting_Godot/excel/ActivityBase.xlsx b/DungeonShooting_Godot/excel/ActivityBase.xlsx
index 33627b4..49ee83e 100644
--- a/DungeonShooting_Godot/excel/ActivityBase.xlsx
+++ b/DungeonShooting_Godot/excel/ActivityBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/BulletBase.xlsx b/DungeonShooting_Godot/excel/BulletBase.xlsx
index be74a03..bdc5175 100644
--- a/DungeonShooting_Godot/excel/BulletBase.xlsx
+++ b/DungeonShooting_Godot/excel/BulletBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/WeaponBase.xlsx b/DungeonShooting_Godot/excel/WeaponBase.xlsx
index 56de75b..9aff6cb 100644
--- a/DungeonShooting_Godot/excel/WeaponBase.xlsx
+++ b/DungeonShooting_Godot/excel/WeaponBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/bullet/normal/Bullet0007.tscn b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0007.tscn
new file mode 100644
index 0000000..9fe3cb3
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0007.tscn
@@ -0,0 +1,67 @@
+[gd_scene load_steps=8 format=3 uid="uid://cybey66bhe4ro"]
+
+[ext_resource type="Script" path="res://src/game/activity/bullet/normal/Bullet.cs" id="1_h4tn7"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_fgeyt"]
+[ext_resource type="SpriteFrames" uid="uid://bkwoy70bnm74k" path="res://resource/spriteFrames/bullet/Bullet0007.tres" id="3_c1ec6"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_v77gw"]
+resource_local_to_scene = true
+shader = ExtResource("2_fgeyt")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
+shader_parameter/show_outline = false
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_r6pkp"]
+resource_local_to_scene = true
+shader = ExtResource("2_fgeyt")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
+shader_parameter/show_outline = false
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = false
+shader_parameter/grey = 0.0
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_0vxfv"]
+radius = 2.0
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_e2yn3"]
+radius = 2.0
+
+[node name="Bullet0007" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "CollisionShape2D", "Particles2D", "ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 2
+collision_mask = 0
+script = ExtResource("1_h4tn7")
+CollisionArea = NodePath("AnimatedSprite/CollisionArea")
+CollisionShape2D = NodePath("AnimatedSprite/CollisionArea/CollisionShape2D")
+Particles2D = []
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_v77gw")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+modulate = Color(1.8, 1.8, 1.8, 1)
+material = SubResource("ShaderMaterial_r6pkp")
+sprite_frames = ExtResource("3_c1ec6")
+
+[node name="CollisionArea" type="Area2D" parent="AnimatedSprite"]
+collision_layer = 0
+collision_mask = 0
+monitorable = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="AnimatedSprite/CollisionArea"]
+position = Vector2(-2.38419e-07, 0)
+shape = SubResource("CircleShape2D_0vxfv")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("CircleShape2D_e2yn3")
diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0014.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0014.tscn
new file mode 100644
index 0000000..b880d0d
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/weapon/Weapon0014.tscn
@@ -0,0 +1,61 @@
+[gd_scene load_steps=8 format=3 uid="uid://dvhan2bubtey0"]
+
+[ext_resource type="PackedScene" uid="uid://cxltmhhp4rbyk" path="res://prefab/weapon/WeaponTemplate.tscn" id="1_3op5w"]
+[ext_resource type="Script" path="res://src/game/activity/weapon/gun/Gun.cs" id="2_toxwq"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="3_ch83c"]
+[ext_resource type="SpriteFrames" uid="uid://taxfr2lcy0f3" path="res://resource/spriteFrames/weapon/Weapon0014.tres" id="4_xdmw2"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_sy2aq"]
+resource_local_to_scene = true
+shader = ExtResource("3_ch83c")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
+shader_parameter/show_outline = true
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_x2qcg"]
+resource_local_to_scene = true
+shader = ExtResource("3_ch83c")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
+shader_parameter/show_outline = true
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_4pn1i"]
+size = Vector2(10.75, 7.75)
+
+[node name="Weapon0014" node_paths=PackedStringArray("FirePoint", "ShellPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_3op5w")]
+script = ExtResource("2_toxwq")
+FirePoint = NodePath("AnimatedSprite/FirePoint")
+ShellPoint = NodePath("AnimatedSprite/ShellPoint")
+AnimationPlayer = NodePath("AnimationPlayer")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" parent="." index="0"]
+material = SubResource("ShaderMaterial_sy2aq")
+
+[node name="AnimatedSprite" parent="." index="1"]
+material = SubResource("ShaderMaterial_x2qcg")
+position = Vector2(4, 0)
+sprite_frames = ExtResource("4_xdmw2")
+
+[node name="ShellPoint" parent="AnimatedSprite" index="0"]
+position = Vector2(-3, -2)
+
+[node name="FirePoint" parent="AnimatedSprite" index="1"]
+position = Vector2(9, -2)
+
+[node name="Collision" parent="." index="2"]
+visible = true
+position = Vector2(4, 0)
+shape = SubResource("RectangleShape2D_4pn1i")
diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json
index a288198..d5e4bf7 100644
--- a/DungeonShooting_Godot/resource/config/ActivityBase.json
+++ b/DungeonShooting_Godot/resource/config/ActivityBase.json
@@ -196,6 +196,20 @@
"ShowInMapEditor": true
},
{
+ "Id": "weapon0014",
+ "Type": 5,
+ "Name": "\u5DE6\u8F6E",
+ "Quality": 4,
+ "Price": 0,
+ "Intro": "",
+ "Details": "",
+ "IsStatic": false,
+ "__Material": "",
+ "Prefab": "res://prefab/weapon/Weapon0014.tscn",
+ "Icon": "res://resource/sprite/weapon/weapon0014/Weapon0014.png",
+ "ShowInMapEditor": true
+ },
+ {
"Id": "bullet0001",
"Type": 6,
"Name": "",
@@ -280,6 +294,20 @@
"ShowInMapEditor": false
},
{
+ "Id": "bullet0007",
+ "Type": 6,
+ "Name": "",
+ "Quality": 0,
+ "Price": 0,
+ "Intro": "",
+ "Details": "",
+ "IsStatic": false,
+ "__Material": "0003",
+ "Prefab": "res://prefab/bullet/normal/Bullet0007.tscn",
+ "Icon": "",
+ "ShowInMapEditor": false
+ },
+ {
"Id": "shell0001",
"Type": 7,
"Name": "",
diff --git a/DungeonShooting_Godot/resource/config/BulletBase.json b/DungeonShooting_Godot/resource/config/BulletBase.json
index 07bee32..c4e5105 100644
--- a/DungeonShooting_Godot/resource/config/BulletBase.json
+++ b/DungeonShooting_Godot/resource/config/BulletBase.json
@@ -246,6 +246,41 @@
]
},
{
+ "Id": "0008",
+ "Name": "\u5B50\u5F394",
+ "Type": 1,
+ "Prefab": "bullet0007",
+ "HarmRange": [
+ 4
+ ],
+ "RepelRange": [
+ 15
+ ],
+ "DeviationAngleRange": [
+ 0
+ ],
+ "SpeedRange": [
+ 350,
+ 380
+ ],
+ "LifeTimeRange": [
+ -1
+ ],
+ "DistanceRange": [
+ 400,
+ 450
+ ],
+ "VerticalSpeed": [
+ 0
+ ],
+ "BounceCount": [
+ 0
+ ],
+ "Penetration": [
+ 0
+ ]
+ },
+ {
"Id": "1001",
"Name": "\u6FC0\u51491",
"Type": 2,
diff --git a/DungeonShooting_Godot/resource/config/WeaponBase.json b/DungeonShooting_Godot/resource/config/WeaponBase.json
index dba12d2..609b751 100644
--- a/DungeonShooting_Godot/resource/config/WeaponBase.json
+++ b/DungeonShooting_Godot/resource/config/WeaponBase.json
@@ -52,6 +52,7 @@
"__Bullet": "0001",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -125,6 +126,7 @@
"__Bullet": "0001",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -198,6 +200,7 @@
"__Bullet": "0002",
"__Shell": "shell0002",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0.2,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -271,6 +274,7 @@
"__Bullet": "0002",
"__Shell": "shell0002",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0.2,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -344,6 +348,7 @@
"__Bullet": "0001",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -417,6 +422,7 @@
"__Bullet": "0001",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -489,6 +495,7 @@
"__Bullet": "2001",
"__Shell": "",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -561,6 +568,7 @@
"__Bullet": "2001",
"__Shell": "",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -634,6 +642,7 @@
"__Bullet": "0004",
"__Shell": "shell0003",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0.2,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -707,6 +716,7 @@
"__Bullet": "0004",
"__Shell": "shell0003",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0.2,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -780,6 +790,7 @@
"__Bullet": "0002",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -853,6 +864,7 @@
"__Bullet": "0002",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -926,6 +938,7 @@
"__Bullet": "0003",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -999,6 +1012,7 @@
"__Bullet": "0003",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1072,6 +1086,7 @@
"__Bullet": "1001",
"__Shell": "",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1145,6 +1160,7 @@
"__Bullet": "1001",
"__Shell": "",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1218,6 +1234,7 @@
"__Bullet": "0005",
"__Shell": "shell0004",
"ReloadThrowShell": true,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0.46,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1291,6 +1308,7 @@
"__Bullet": "0005",
"__Shell": "shell0004",
"ReloadThrowShell": true,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0.46,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1364,6 +1382,7 @@
"__Bullet": "0007",
"__Shell": "",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1437,6 +1456,7 @@
"__Bullet": "0007",
"__Shell": "",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1510,6 +1530,7 @@
"__Bullet": "0003",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1583,6 +1604,7 @@
"__Bullet": "0003",
"__Shell": "shell0001",
"ReloadThrowShell": false,
+ "ThrowShellCount": 0,
"ThrowShellDelayTime": 0,
"CanMeleeAttack": true,
"MeleeAttackHarmRange": [
@@ -1602,5 +1624,153 @@
"BeLoadedSoundDelayTime": 0,
"__OtherSoundMap": null,
"__AiAttackAttr": "0006"
+ },
+ {
+ "Id": "0014",
+ "Remark": "\u5DE6\u8F6E",
+ "__Activity": "weapon0014",
+ "Weight": 20,
+ "WeightType": 1,
+ "IsMelee": false,
+ "ContinuousShoot": false,
+ "AmmoCapacity": 5,
+ "MaxAmmoCapacity": 120,
+ "StandbyAmmoCapacity": 80,
+ "ReloadTime": 1,
+ "AloneReload": false,
+ "AloneReloadCount": 1,
+ "AloneReloadBeginIntervalTime": 0,
+ "AloneReloadFinishIntervalTime": 0,
+ "AloneReloadCanShoot": false,
+ "LooseShoot": false,
+ "MinChargeTime": 0,
+ "ManualBeLoaded": false,
+ "AutoManualBeLoaded": false,
+ "BeLoadedTime": 0.05,
+ "ContinuousCountRange": [
+ 1
+ ],
+ "TriggerInterval": 0,
+ "StartFiringSpeed": 600,
+ "FinalFiringSpeed": 600,
+ "FiringSpeedAddSpeed": 0,
+ "FiringSpeedBackSpeed": 0,
+ "FiringSpeedBackTime": 0,
+ "FireBulletCountRange": [
+ 1
+ ],
+ "DelayedTime": 0,
+ "StartScatteringRange": 2,
+ "FinalScatteringRange": 25,
+ "ScatteringRangeAddValue": 5,
+ "ScatteringRangeBackSpeed": 25,
+ "ScatteringRangeBackDelayTime": 0.5,
+ "CameraShake": 4,
+ "BacklashRange": [
+ 3,
+ 5
+ ],
+ "BacklashRegressionSpeed": 35,
+ "UpliftAngle": 20,
+ "DefaultAngle": 0,
+ "UpliftAngleRestore": 1,
+ "FireEffect": "res://prefab/effect/weapon/ShotFire0001.tscn",
+ "__Bullet": "0008",
+ "__Shell": "shell0001",
+ "ReloadThrowShell": true,
+ "ThrowShellCount": 5,
+ "ThrowShellDelayTime": 0,
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 10
+ ],
+ "MeleeAttackRepelRange": [
+ 100
+ ],
+ "__ShootSound": "shooting0004",
+ "__BeginReloadSound": "reloading0001",
+ "BeginReloadSoundDelayTime": 0,
+ "__ReloadSound": "",
+ "ReloadSoundDelayTime": 0,
+ "__ReloadFinishSound": "beLoaded0015",
+ "ReloadFinishSoundAdvanceTime": 0.43,
+ "__BeLoadedSound": "",
+ "BeLoadedSoundDelayTime": 0,
+ "__OtherSoundMap": null,
+ "__AiAttackAttr": ""
+ },
+ {
+ "Id": "0014_ai",
+ "Remark": "\u5DE6\u8F6E",
+ "__Activity": "",
+ "Weight": 20,
+ "WeightType": 1,
+ "IsMelee": false,
+ "ContinuousShoot": false,
+ "AmmoCapacity": 5,
+ "MaxAmmoCapacity": 120,
+ "StandbyAmmoCapacity": 80,
+ "ReloadTime": 1,
+ "AloneReload": false,
+ "AloneReloadCount": 1,
+ "AloneReloadBeginIntervalTime": 0,
+ "AloneReloadFinishIntervalTime": 0,
+ "AloneReloadCanShoot": false,
+ "LooseShoot": false,
+ "MinChargeTime": 0,
+ "ManualBeLoaded": false,
+ "AutoManualBeLoaded": false,
+ "BeLoadedTime": 0.05,
+ "ContinuousCountRange": [
+ 1
+ ],
+ "TriggerInterval": 0.8,
+ "StartFiringSpeed": 300,
+ "FinalFiringSpeed": 300,
+ "FiringSpeedAddSpeed": 0,
+ "FiringSpeedBackSpeed": 0,
+ "FiringSpeedBackTime": 0,
+ "FireBulletCountRange": [
+ 1
+ ],
+ "DelayedTime": 0,
+ "StartScatteringRange": 2,
+ "FinalScatteringRange": 25,
+ "ScatteringRangeAddValue": 5,
+ "ScatteringRangeBackSpeed": 25,
+ "ScatteringRangeBackDelayTime": 0.5,
+ "CameraShake": 4,
+ "BacklashRange": [
+ 3,
+ 5
+ ],
+ "BacklashRegressionSpeed": 35,
+ "UpliftAngle": 20,
+ "DefaultAngle": 0,
+ "UpliftAngleRestore": 1,
+ "FireEffect": "res://prefab/effect/weapon/ShotFire0001.tscn",
+ "__Bullet": "0008",
+ "__Shell": "shell0001",
+ "ReloadThrowShell": true,
+ "ThrowShellCount": 5,
+ "ThrowShellDelayTime": 0,
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 10
+ ],
+ "MeleeAttackRepelRange": [
+ 100
+ ],
+ "__ShootSound": "shooting0004",
+ "__BeginReloadSound": "reloading0001",
+ "BeginReloadSoundDelayTime": 0,
+ "__ReloadSound": "",
+ "ReloadSoundDelayTime": 0,
+ "__ReloadFinishSound": "beLoaded0015",
+ "ReloadFinishSoundAdvanceTime": 0.43,
+ "__BeLoadedSound": "",
+ "BeLoadedSoundDelayTime": 0,
+ "__OtherSoundMap": null,
+ "__AiAttackAttr": "0003"
}
]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json
index 63a7e48..4a8139c 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json
@@ -1 +1 @@
-[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
+[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0007.png b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0007.png
new file mode 100644
index 0000000..409f5ea
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0007.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0007.png.import b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0007.png.import
new file mode 100644
index 0000000..d3df7c1
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0007.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ktgwsn6cecn1"
+path="res://.godot/imported/bullet0007.png-671d78db00259eec71ff1bbeb7323d38.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/normal/bullet0007.png"
+dest_files=["res://.godot/imported/bullet0007.png-671d78db00259eec71ff1bbeb7323d38.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/Weapon0014.png b/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/Weapon0014.png
new file mode 100644
index 0000000..3113087
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/Weapon0014.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/Weapon0014.png.import b/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/Weapon0014.png.import
new file mode 100644
index 0000000..af570f3
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/Weapon0014.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d27ax1aqghn0k"
+path="res://.godot/imported/Weapon0014.png-24bed8267d2ed0e312778ce83c4afa5a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/weapon0014/Weapon0014.png"
+dest_files=["res://.godot/imported/Weapon0014.png-24bed8267d2ed0e312778ce83c4afa5a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/gun2.png.import b/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/gun2.png.import
deleted file mode 100644
index feb8eb6..0000000
--- a/DungeonShooting_Godot/resource/sprite/weapon/weapon0014/gun2.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://5geiuvv6hyov"
-path="res://.godot/imported/gun2.png-78b331a2f245cfbe03b10da276435b64.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/weapon/gun2.png"
-dest_files=["res://.godot/imported/gun2.png-78b331a2f245cfbe03b10da276435b64.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0007.tres b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0007.tres
new file mode 100644
index 0000000..c719795
--- /dev/null
+++ b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0007.tres
@@ -0,0 +1,14 @@
+[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://bkwoy70bnm74k"]
+
+[ext_resource type="Texture2D" uid="uid://ktgwsn6cecn1" path="res://resource/sprite/bullet/normal/bullet0007.png" id="1_5lygh"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_5lygh")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/weapon/Weapon0014.tres b/DungeonShooting_Godot/resource/spriteFrames/weapon/Weapon0014.tres
new file mode 100644
index 0000000..148385f
--- /dev/null
+++ b/DungeonShooting_Godot/resource/spriteFrames/weapon/Weapon0014.tres
@@ -0,0 +1,14 @@
+[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://taxfr2lcy0f3"]
+
+[ext_resource type="Texture2D" uid="uid://d27ax1aqghn0k" path="res://resource/sprite/weapon/weapon0014/Weapon0014.png" id="1_lpq2x"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_lpq2x")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_WeaponBase.cs b/DungeonShooting_Godot/src/config/ExcelConfig_WeaponBase.cs
index acf351d..ba3d942 100644
--- a/DungeonShooting_Godot/src/config/ExcelConfig_WeaponBase.cs
+++ b/DungeonShooting_Godot/src/config/ExcelConfig_WeaponBase.cs
@@ -281,6 +281,12 @@
public bool ReloadThrowShell;
///
+ /// 抛壳数量
+ ///
+ [JsonInclude]
+ public int ThrowShellCount;
+
+ ///
/// 投抛弹壳的延时时间
///
[JsonInclude]
@@ -418,6 +424,7 @@
inst.Bullet = Bullet;
inst.Shell = Shell;
inst.ReloadThrowShell = ReloadThrowShell;
+ inst.ThrowShellCount = ThrowShellCount;
inst.ThrowShellDelayTime = ThrowShellDelayTime;
inst.CanMeleeAttack = CanMeleeAttack;
inst.MeleeAttackHarmRange = MeleeAttackHarmRange;
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index c1df506..49dcf5b 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -79,6 +79,11 @@
///
public const string Id_weapon0013 = "weapon0013";
///
+ /// 名称: 左轮
+ /// 简介:
+ ///
+ public const string Id_weapon0014 = "weapon0014";
+ ///
/// 名称:
/// 简介:
///
@@ -112,6 +117,11 @@
/// 名称:
/// 简介:
///
+ public const string Id_bullet0007 = "bullet0007";
+ ///
+ /// 名称:
+ /// 简介:
+ ///
public const string Id_shell0001 = "shell0001";
///
/// 名称:
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
index 4443bef..4499111 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
@@ -1510,23 +1510,30 @@
//抛弹逻辑
private void ThrowShellHandler(float speedScale)
{
- if (Attribute.Shell == null)
+ var attribute = Attribute;
+ if (attribute.Shell == null)
{
return;
}
//创建一个弹壳
- if (Attribute.ThrowShellDelayTime > 0)
+ if (attribute.ThrowShellDelayTime > 0)
{
- this.CallDelay(Attribute.ThrowShellDelayTime, () =>
+ this.CallDelay(attribute.ThrowShellDelayTime, () =>
{
_reloadShellFlag = true;
- FireManager.ThrowShell(this, Attribute.Shell, speedScale);
+ for (var i = 0; i < attribute.ThrowShellCount; i++)
+ {
+ FireManager.ThrowShell(this, attribute.Shell, speedScale);
+ }
});
}
- else if (Attribute.ThrowShellDelayTime == 0)
+ else if (attribute.ThrowShellDelayTime == 0)
{
_reloadShellFlag = true;
- FireManager.ThrowShell(this, Attribute.Shell, speedScale);
+ for (var i = 0; i < attribute.ThrowShellCount; i++)
+ {
+ FireManager.ThrowShell(this, attribute.Shell, speedScale);
+ }
}
}
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index 153224b..93a1a83 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -77,6 +77,7 @@
public const string prefab_bullet_normal_Bullet0004_tscn = "res://prefab/bullet/normal/Bullet0004.tscn";
public const string prefab_bullet_normal_Bullet0005_tscn = "res://prefab/bullet/normal/Bullet0005.tscn";
public const string prefab_bullet_normal_Bullet0006_tscn = "res://prefab/bullet/normal/Bullet0006.tscn";
+ public const string prefab_bullet_normal_Bullet0007_tscn = "res://prefab/bullet/normal/Bullet0007.tscn";
public const string prefab_currency_Gold1_tscn = "res://prefab/currency/Gold1.tscn";
public const string prefab_currency_Gold10_tscn = "res://prefab/currency/Gold10.tscn";
public const string prefab_currency_Gold5_tscn = "res://prefab/currency/Gold5.tscn";
@@ -174,6 +175,7 @@
public const string prefab_weapon_Weapon0009_tscn = "res://prefab/weapon/Weapon0009.tscn";
public const string prefab_weapon_Weapon0010_tscn = "res://prefab/weapon/Weapon0010.tscn";
public const string prefab_weapon_Weapon0013_tscn = "res://prefab/weapon/Weapon0013.tscn";
+ public const string prefab_weapon_Weapon0014_tscn = "res://prefab/weapon/Weapon0014.tscn";
public const string prefab_weapon_WeaponTemplate_tscn = "res://prefab/weapon/WeaponTemplate.tscn";
public const string resource_config_ActivityBase_json = "res://resource/config/ActivityBase.json";
public const string resource_config_ActivityMaterial_json = "res://resource/config/ActivityMaterial.json";
@@ -277,6 +279,7 @@
public const string resource_sprite_bullet_normal_bullet0004_png = "res://resource/sprite/bullet/normal/bullet0004.png";
public const string resource_sprite_bullet_normal_bullet0005_png = "res://resource/sprite/bullet/normal/bullet0005.png";
public const string resource_sprite_bullet_normal_bullet0006_png = "res://resource/sprite/bullet/normal/bullet0006.png";
+ public const string resource_sprite_bullet_normal_bullet0007_png = "res://resource/sprite/bullet/normal/bullet0007.png";
public const string resource_sprite_bullet_normal_bullet2_png = "res://resource/sprite/bullet/normal/bullet2.png";
public const string resource_sprite_common_Circle_png = "res://resource/sprite/common/Circle.png";
public const string resource_sprite_common_Circle2_png = "res://resource/sprite/common/Circle2.png";
@@ -468,6 +471,7 @@
public const string resource_sprite_weapon_weapon0013_weapon0013_png = "res://resource/sprite/weapon/weapon0013/weapon0013.png";
public const string resource_sprite_weapon_weapon0013_weapon0014export_png = "res://resource/sprite/weapon/weapon0013/weapon0014-export.png";
public const string resource_sprite_weapon_weapon0013_weapon0014_png = "res://resource/sprite/weapon/weapon0013/weapon0014.png";
+ public const string resource_sprite_weapon_weapon0014_Weapon0014_png = "res://resource/sprite/weapon/weapon0014/Weapon0014.png";
public const string resource_sprite_weapon_weapon0015_gun3_png = "res://resource/sprite/weapon/weapon0015/gun3.png";
public const string resource_sprite_weapon_weapon0016_gun4_png = "res://resource/sprite/weapon/weapon0016/gun4.png";
public const string resource_sprite_weapon_weapon0017_gun5_png = "res://resource/sprite/weapon/weapon0017/gun5.png";
@@ -480,6 +484,7 @@
public const string resource_spriteFrames_bullet_Bullet0004_tres = "res://resource/spriteFrames/bullet/Bullet0004.tres";
public const string resource_spriteFrames_bullet_Bullet0005_tres = "res://resource/spriteFrames/bullet/Bullet0005.tres";
public const string resource_spriteFrames_bullet_Bullet0006_tres = "res://resource/spriteFrames/bullet/Bullet0006.tres";
+ public const string resource_spriteFrames_bullet_Bullet0007_tres = "res://resource/spriteFrames/bullet/Bullet0007.tres";
public const string resource_spriteFrames_bullet_Collision0001_tres = "res://resource/spriteFrames/bullet/Collision0001.tres";
public const string resource_spriteFrames_bullet_Collision0002_tres = "res://resource/spriteFrames/bullet/Collision0002.tres";
public const string resource_spriteFrames_other_RoomDoor_E_Down_tres = "res://resource/spriteFrames/other/RoomDoor_E_Down.tres";
@@ -524,6 +529,7 @@
public const string resource_spriteFrames_weapon_Weapon0009_tres = "res://resource/spriteFrames/weapon/Weapon0009.tres";
public const string resource_spriteFrames_weapon_Weapon0010_tres = "res://resource/spriteFrames/weapon/Weapon0010.tres";
public const string resource_spriteFrames_weapon_Weapon0013_tres = "res://resource/spriteFrames/weapon/Weapon0013.tres";
+ public const string resource_spriteFrames_weapon_Weapon0014_tres = "res://resource/spriteFrames/weapon/Weapon0014.tres";
public const string resource_theme_mainTheme_tres = "res://resource/theme/mainTheme.tres";
public const string resource_theme_theme1_tres = "res://resource/theme/theme1.tres";
public const string scene_Main_tscn = "res://scene/Main.tscn";