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); }