diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
index 952695c..54602fd 100644
--- a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx
index acc76ba..f4d9774 100644
--- a/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx b/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx
index a6a8d0f..d7fe0c7 100644
--- a/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx b/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx
index 93e0f3c..e8211c7 100644
--- a/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
index 1280881..609149c 100644
--- a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
index 1555142..1f3aced 100644
--- a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/prop/buff/BuffProp0011.tscn b/DungeonShooting_Godot/prefab/prop/buff/BuffProp0011.tscn
new file mode 100644
index 0000000..7b64167
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/prop/buff/BuffProp0011.tscn
@@ -0,0 +1,48 @@
+[gd_scene load_steps=7 format=3 uid="uid://bs3ysp1587xqe"]
+
+[ext_resource type="Script" path="res://src/game/activity/prop/buff/BuffProp0011.cs" id="1_dnyh3"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_d5gcm"]
+[ext_resource type="SpriteFrames" uid="uid://bq7t8ruav5g41" path="res://resource/spriteFrames/prop/buff/BuffProp0011.tres" id="3_hrxu3"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_mrkt4"]
+resource_local_to_scene = true
+shader = ExtResource("2_d5gcm")
+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
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_b6ii6"]
+resource_local_to_scene = true
+shader = ExtResource("2_d5gcm")
+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
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_cpqup"]
+size = Vector2(12, 10)
+
+[node name="BuffProp0011" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 4
+script = ExtResource("1_dnyh3")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_mrkt4")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+material = SubResource("ShaderMaterial_b6ii6")
+sprite_frames = ExtResource("3_hrxu3")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("RectangleShape2D_cpqup")
diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json
index 946ee41..520add8 100644
--- a/DungeonShooting_Godot/resource/config/ActivityBase.json
+++ b/DungeonShooting_Godot/resource/config/ActivityBase.json
@@ -351,7 +351,7 @@
"Id": "prop0010",
"Type": 9,
"Name": "\u5206\u88C2\u5B50\u5F39",
- "Intro": "\u5B50\u5F39\u6570\u91CF\u7FFB\u500D, \u4F46\u662F\u7CBE\u51C6\u5EA6\u548C\u4F24\u5BB3\u964D\u4F4E",
+ "Intro": "\u5B50\u5F39\u6570\u91CF\u7FFB\u500D, \u4F46\u662F\u7CBE\u51C6\u5EA6, \u51FB\u9000\u548C\u4F24\u5BB3\u964D\u4F4E",
"Details": "",
"IsStatic": false,
"__Material": "",
@@ -360,6 +360,18 @@
"ShowInMapEditor": true
},
{
+ "Id": "prop0011",
+ "Type": 9,
+ "Name": "\u5F39\u5C04\u5B50\u5F39",
+ "Intro": "\u5B50\u5F39\u53CD\u5F39\u6B21\u6570 \u002B2",
+ "Details": "",
+ "IsStatic": false,
+ "__Material": "",
+ "Prefab": "res://prefab/prop/buff/BuffProp0011.tscn",
+ "Icon": "res://resource/sprite/prop/buff/BuffProp0011.png",
+ "ShowInMapEditor": true
+ },
+ {
"Id": "prop5000",
"Type": 9,
"Name": "\u533B\u836F\u7BB1",
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json
index 44c64cd..6da7e6d 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json
@@ -1 +1 @@
-[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":19,"Y":2},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":24,"Y":-14},"Size":{"X":0,"Y":0},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":6,"Y":34},"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":-42,"Y":9},"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":-63,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-31,"Y":-16},"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":-47,"Y":32},"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":2,"Y":-25},"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":-80,"Y":14},"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":-75,"Y":47},"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":57,"Y":56},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":67,"Y":28},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":60,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":34,"Y":23},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"prop0002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-11,"Y":8},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-20,"Y":33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
+[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":19,"Y":2},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":24,"Y":-14},"Size":{"X":0,"Y":0},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":6,"Y":34},"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":-42,"Y":9},"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":-63,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-31,"Y":-16},"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":-47,"Y":32},"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":2,"Y":-25},"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":-80,"Y":14},"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":-75,"Y":47},"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":38,"Y":1},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":57,"Y":56},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":67,"Y":28},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":60,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":34,"Y":23},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"prop0002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-11,"Y":8},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-20,"Y":33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/sprite/prop/buff/BuffProp0011.png b/DungeonShooting_Godot/resource/sprite/prop/buff/BuffProp0011.png
new file mode 100644
index 0000000..718794f
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/prop/buff/BuffProp0011.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/prop/buff/BuffProp0011.png.import b/DungeonShooting_Godot/resource/sprite/prop/buff/BuffProp0011.png.import
new file mode 100644
index 0000000..0e87026
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/prop/buff/BuffProp0011.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3lemqkwfnufw"
+path="res://.godot/imported/BuffProp0011.png-cbec00a310f3df70762a02dad80ea824.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/prop/buff/BuffProp0011.png"
+dest_files=["res://.godot/imported/BuffProp0011.png-cbec00a310f3df70762a02dad80ea824.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/prop/buff/BuffProp0011.tres b/DungeonShooting_Godot/resource/spriteFrames/prop/buff/BuffProp0011.tres
new file mode 100644
index 0000000..6a95208
--- /dev/null
+++ b/DungeonShooting_Godot/resource/spriteFrames/prop/buff/BuffProp0011.tres
@@ -0,0 +1,14 @@
+[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://bq7t8ruav5g41"]
+
+[ext_resource type="Texture2D" uid="uid://b3lemqkwfnufw" path="res://resource/sprite/prop/buff/BuffProp0011.png" id="1_abwtt"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_abwtt")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index b077a48..073adca 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -388,37 +388,6 @@
}
///
- /// 子类需要重写 _EnterTree() 函数, 请重写 EnterTree()
- ///
- public sealed override void _EnterTree()
- {
-#if TOOLS
- // 在工具模式下创建的 template 节点自动创建对应的必要子节点
- if (Engine.IsEditorHint())
- {
- _InitNodeInEditor();
- return;
- }
-#endif
- EnterTree();
- }
-
- ///
- /// 子类需要重写 _ExitTree() 函数, 请重写 ExitTree()
- ///
- public sealed override void _ExitTree()
- {
-#if TOOLS
- // 在工具模式下创建的 template 节点自动创建对应的必要子节点
- if (Engine.IsEditorHint())
- {
- return;
- }
-#endif
- ExitTree();
- }
-
- ///
/// 显示并更新阴影
///
public void ShowShadowSprite()
@@ -500,22 +469,6 @@
public virtual void OnInit()
{
}
-
- ///
- /// 进入场景树时调用
- ///
- public virtual void EnterTree()
- {
-
- }
-
- ///
- /// 离开场景树时调用
- ///
- public virtual void ExitTree()
- {
-
- }
///
/// 返回是否能与其他ActivityObject互动
@@ -658,10 +611,12 @@
{
if (parent != null)
{
- parent.RemoveChild(this);
+ Reparent(root);
}
-
- this.AddToActivityRoot(layer);
+ else
+ {
+ root.AddChild(this);
+ }
}
if (showShadow)
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index 8372962..2486e6a 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -155,10 +155,15 @@
public const string Id_prop0009 = "prop0009";
///
/// 名称: 分裂子弹
- /// 简介: 子弹数量翻倍, 但是精准度和伤害降低
+ /// 简介: 子弹数量翻倍, 但是精准度, 击退和伤害降低
///
public const string Id_prop0010 = "prop0010";
///
+ /// 名称: 弹射子弹
+ /// 简介: 子弹反弹次数 +2
+ ///
+ public const string Id_prop0011 = "prop0011";
+ ///
/// 名称: 医药箱
/// 简介: 使用后回复一颗红心
///
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
index e99694f..1a6e160 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
@@ -1,3 +1,4 @@
+
using System.Collections;
using Godot;
@@ -83,9 +84,9 @@
PutDown(RoomLayerEnum.YSortLayer);
//播放子弹移动动画
PlaySpriteAnimation(AnimatorNames.Move);
- //强制更新下坠逻辑处理
UpdateFall((float)GetProcessDeltaTime());
-
+ //强制更新下坠逻辑处理
+
//过期销毁
if (data.LifeTime > 0)
{
diff --git a/DungeonShooting_Godot/src/game/activity/prop/buff/BuffProp0011.cs b/DungeonShooting_Godot/src/game/activity/prop/buff/BuffProp0011.cs
new file mode 100644
index 0000000..025eb43
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/activity/prop/buff/BuffProp0011.cs
@@ -0,0 +1,24 @@
+
+using Godot;
+
+///
+/// 弹射子弹 子弹反弹次数 +2
+///
+[Tool]
+public partial class BuffProp0011 : BuffProp
+{
+ public override void OnPickUpItem()
+ {
+ Master.RoleState.CalcBulletBounceCountEvent += CalcBulletBounceCountEvent;
+ }
+
+ public override void OnRemoveItem()
+ {
+ Master.RoleState.CalcBulletBounceCountEvent -= CalcBulletBounceCountEvent;
+ }
+
+ private void CalcBulletBounceCountEvent(Weapon weapon, int originBounce, RefValue bounce)
+ {
+ bounce.Value += 2;
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
index 09bec56..0ba5075 100644
--- a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
@@ -194,4 +194,20 @@
return distance;
}
+
+ ///
+ /// 子弹反弹次数
+ ///
+ public event Action> CalcBulletBounceCountEvent;
+ public int CalcBulletBounceCount(Weapon weapon, int distance)
+ {
+ if (CalcBulletBounceCountEvent != null)
+ {
+ var result = new RefValue(distance);
+ CalcBulletBounceCountEvent(weapon, distance, result);
+ return result.Value;
+ }
+
+ return distance;
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
index 8de6844..db74aef 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
@@ -103,18 +103,16 @@
StateController.ChangeStateInstant(AiStateEnum.AiNormal);
}
- public override void EnterTree()
+ public override void _EnterTree()
{
- base.EnterTree();
if (!World.Enemy_InstanceList.Contains(this))
{
World.Enemy_InstanceList.Add(this);
}
}
- public override void ExitTree()
+ public override void _ExitTree()
{
- base.ExitTree();
World.Enemy_InstanceList.Remove(this);
}
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
index 1d18c21..be9b74e 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
@@ -431,9 +431,8 @@
return 1;
}
- public override void EnterTree()
+ public override void _EnterTree()
{
- base.EnterTree();
//收集落在地上的武器
if (IsInGround())
{
@@ -441,9 +440,8 @@
}
}
- public override void ExitTree()
+ public override void _ExitTree()
{
- base.ExitTree();
World.Weapon_UnclaimedWeapons.Remove(this);
}
@@ -1041,7 +1039,7 @@
{
fireRotation += GlobalRotation;
}
-
+
//创建子弹
for (var i = 0; i < bulletCount; i++)
{
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon_Bullet.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon_Bullet.cs
index 20c0456..28f8ae2 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon_Bullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon_Bullet.cs
@@ -1,4 +1,5 @@
+using System;
using Config;
using Godot;
@@ -89,6 +90,7 @@
data.Repel = roleState.CalcBulletRepel(this, data.Repel);
data.FlySpeed = roleState.CalcBulletSpeed(this, data.FlySpeed);
data.MaxDistance = roleState.CalcBulletDistance(this, data.MaxDistance);
+ data.BounceCount = roleState.CalcBulletBounceCount(this, data.BounceCount);
deviationAngle = roleState.CalcBulletDeviationAngle(this, deviationAngle);
if (TriggerRole.IsAi) //只有玩家使用该武器才能获得正常速度的子弹
@@ -97,7 +99,6 @@
}
}
-
data.Rotation = fireRotation + Mathf.DegToRad(deviationAngle);
//创建子弹
var bulletInstance = Create(bullet.Prefab);
@@ -129,6 +130,7 @@
var roleState = TriggerRole.RoleState;
data.Harm = roleState.CalcDamage(data.Harm);
data.Repel = roleState.CalcBulletRepel(this, data.Repel);
+ data.BounceCount = roleState.CalcBulletBounceCount(this, data.BounceCount);
deviationAngle = roleState.CalcBulletDeviationAngle(this, deviationAngle);
}