diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
index 10deb1a..ed8d65f 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 8d9efc9..63374e9 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 717252f..39e31d9 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 30c616f..7d13e52 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/EnemyBase.xlsx b/DungeonShooting_Godot/excel/excelFile/EnemyBase.xlsx
index adbcf30..70020d3 100644
--- a/DungeonShooting_Godot/excel/excelFile/EnemyBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/EnemyBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx b/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx
index 56dd8b6..b952713 100644
--- a/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
index b8161de..9ba4926 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 595e022..3f64326 100644
--- a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/bullet/normal/Bullet0005.tscn b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0005.tscn
index 6b0b303..ef1081d 100644
--- a/DungeonShooting_Godot/prefab/bullet/normal/Bullet0005.tscn
+++ b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0005.tscn
@@ -1,8 +1,8 @@
[gd_scene load_steps=7 format=3 uid="uid://cjgnw37tqiqh7"]
-[ext_resource type="Script" path="res://src/game/activity/bullet/normal/Bullet.cs" id="1_vpnof"]
+[ext_resource type="Script" path="res://src/game/activity/bullet/normal/BrushBullet.cs" id="1_13wdl"]
[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_v0al6"]
-[ext_resource type="SpriteFrames" uid="uid://bcnhyin0aufl1" path="res://resource/spriteFrames/bullet/Bullet0003.tres" id="3_8mltb"]
+[ext_resource type="SpriteFrames" uid="uid://jj8oh76pi53j" path="res://resource/spriteFrames/bullet/Bullet0005.tres" id="3_mmvqn"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_v77gw"]
resource_local_to_scene = true
@@ -14,6 +14,7 @@
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_p0wfd"]
resource_local_to_scene = true
@@ -25,13 +26,16 @@
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_c0onq"]
-size = Vector2(6, 3.125)
+size = Vector2(6, 3.5625)
[node name="Bullet0005" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "CollisionShape2D", "ShadowSprite", "AnimatedSprite", "Collision")]
collision_layer = 2
-script = ExtResource("1_vpnof")
+script = ExtResource("1_13wdl")
+BrushId = "0004"
+EffectiveAltitude = 1.0
CollisionArea = NodePath("AnimatedSprite/CollisionArea")
CollisionShape2D = NodePath("AnimatedSprite/CollisionArea/CollisionShape2D")
ShadowSprite = NodePath("ShadowSprite")
@@ -43,9 +47,8 @@
material = SubResource("ShaderMaterial_v77gw")
[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-modulate = Color(1.6, 1.6, 1.6, 1)
material = SubResource("ShaderMaterial_p0wfd")
-sprite_frames = ExtResource("3_8mltb")
+sprite_frames = ExtResource("3_mmvqn")
[node name="CollisionArea" type="Area2D" parent="AnimatedSprite"]
visible = false
diff --git a/DungeonShooting_Godot/prefab/test/TestActivity.tscn b/DungeonShooting_Godot/prefab/test/TestActivity.tscn
deleted file mode 100644
index 203f1e7..0000000
--- a/DungeonShooting_Godot/prefab/test/TestActivity.tscn
+++ /dev/null
@@ -1,42 +0,0 @@
-[gd_scene load_steps=7 format=3]
-
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="1"]
-[ext_resource type="Script" path="res://src/framework/activity/ActivityObjectTemplate.cs" id="2"]
-[ext_resource type="Texture2D" uid="uid://uhhfgdhpk7i4" path="res://icon.png" id="3"]
-
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_rxkv3"]
-resource_local_to_scene = true
-shader = ExtResource("1")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_aaga8"]
-resource_local_to_scene = true
-shader = ExtResource("1")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_kkdcb"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("3")
-}],
-"loop": true,
-"name": &"default",
-"speed": 5.0
-}]
-
-[node name="TestActivity" type="Node"]
-script = ExtResource("2")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -5
-material = SubResource("ShaderMaterial_rxkv3")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-material = SubResource("ShaderMaterial_aaga8")
-sprite_frames = SubResource("SpriteFrames_kkdcb")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json
index 8d049da..93c1152 100644
--- a/DungeonShooting_Godot/resource/config/ActivityBase.json
+++ b/DungeonShooting_Godot/resource/config/ActivityBase.json
@@ -194,7 +194,7 @@
{
"Id": "bullet0005",
"Type": 6,
- "Name": "\u654C\u65B9\u4E13\u7528\u5B50\u5F39",
+ "Name": "\u629B\u7269\u7EBF\u7C98\u6DB2\u5B50\u5F39",
"Intro": "",
"Details": "",
"IsStatic": false,
diff --git a/DungeonShooting_Godot/resource/config/BulletBase.json b/DungeonShooting_Godot/resource/config/BulletBase.json
index 1d45efc..dff8861 100644
--- a/DungeonShooting_Godot/resource/config/BulletBase.json
+++ b/DungeonShooting_Godot/resource/config/BulletBase.json
@@ -177,7 +177,7 @@
},
{
"Id": "0006",
- "Name": "\u654C\u65B9\u4E13\u7528\u5B50\u5F39",
+ "Name": "\u629B\u7269\u7EBF\u7C98\u6DB2\u5B50\u5F39",
"Type": 1,
"Prefab": "bullet0005",
"HarmRange": [
diff --git a/DungeonShooting_Godot/resource/config/LiquidMaterial.json b/DungeonShooting_Godot/resource/config/LiquidMaterial.json
index bd94e3b..ba10e25 100644
--- a/DungeonShooting_Godot/resource/config/LiquidMaterial.json
+++ b/DungeonShooting_Godot/resource/config/LiquidMaterial.json
@@ -17,10 +17,18 @@
},
{
"Id": "0003",
- "Remark": "\u8840\u6DB2",
+ "Remark": "\u8840\u6DB2(\u6700\u5C0F\u7B14\u5237)",
"BurshTexture": "res://resource/sprite/brush/Brush4.png",
"Ffm": 0.5,
- "Duration": 6,
+ "Duration": 12,
+ "WriteOffSpeed": 0.2
+ },
+ {
+ "Id": "0004",
+ "Remark": "\u7C98\u6DB2(\u6700\u5C0F\u7B14\u5237)",
+ "BurshTexture": "res://resource/sprite/brush/Brush5.png",
+ "Ffm": 0.5,
+ "Duration": 5,
"WriteOffSpeed": 0.2
}
]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/sprite/brush/Brush5.png b/DungeonShooting_Godot/resource/sprite/brush/Brush5.png
new file mode 100644
index 0000000..0d36bb0
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/brush/Brush5.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/brush/Brush5.png.import b/DungeonShooting_Godot/resource/sprite/brush/Brush5.png.import
new file mode 100644
index 0000000..cb793aa
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/brush/Brush5.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dsqowv1dswkci"
+path="res://.godot/imported/Brush5.png-ad7fa73ae4dca0a5e86aca7805550870.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/brush/Brush5.png"
+dest_files=["res://.godot/imported/Brush5.png-ad7fa73ae4dca0a5e86aca7805550870.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/bullet/normal/bullet0005.png b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0005.png
new file mode 100644
index 0000000..7844c54
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0005.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0005.png.import b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0005.png.import
new file mode 100644
index 0000000..3791292
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cwk72cqlmii5b"
+path="res://.godot/imported/bullet0005.png-140cec2433af182a66a845defdf21e80.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/normal/bullet0005.png"
+dest_files=["res://.godot/imported/bullet0005.png-140cec2433af182a66a845defdf21e80.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/Bullet0005.tres b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0005.tres
new file mode 100644
index 0000000..49e5677
--- /dev/null
+++ b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0005.tres
@@ -0,0 +1,14 @@
+[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://jj8oh76pi53j"]
+
+[ext_resource type="Texture2D" uid="uid://cwk72cqlmii5b" path="res://resource/sprite/bullet/normal/bullet0005.png" id="1_qmb1b"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_qmb1b")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index 02b1b5e..79056c5 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -89,7 +89,7 @@
///
public const string Id_bullet0004 = "bullet0004";
///
- /// 名称: 敌方专用子弹
+ /// 名称: 抛物线粘液子弹
/// 简介:
///
public const string Id_bullet0005 = "bullet0005";
diff --git a/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs b/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs
index 2a03b61..bff2c40 100644
--- a/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs
+++ b/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs
@@ -51,7 +51,7 @@
{
if (_prevRoomInfo != roomInfo)
{
- Debug.Log($"切换房间: {_prevRoomInfo?.Id} => {roomInfo.Id}");
+ //Debug.Log($"切换房间: {_prevRoomInfo?.Id} => {roomInfo.Id}");
if (_prevRoomInfo != null)
{
//房间变暗
@@ -88,7 +88,7 @@
_prevRoomInfo = roomInfo;
}
- Debug.Log("RefreshRoomFog: " + roomInfo.Id);
+ //Debug.Log("RefreshRoomFog: " + roomInfo.Id);
var fogMask = roomInfo.RoomFogMask;
if (!fogMask.IsExplored) //未探索该区域
@@ -139,7 +139,7 @@
private static void _RefreshAisleFog(RoomDoorInfo doorInfo)
{
- Debug.Log("RefreshAisleFog: " + doorInfo.RoomInfo.Id + doorInfo.Direction);
+ //Debug.Log("RefreshAisleFog: " + doorInfo.RoomInfo.Id + doorInfo.Direction);
var fogMask = doorInfo.AisleFogMask;
var connectDoor = doorInfo.ConnectDoor;
diff --git a/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs b/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs
index 0cebaec..374e64f 100644
--- a/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs
+++ b/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs
@@ -189,7 +189,7 @@
var len = offset.Length();
if (len > maxL) //距离太大了, 需要补间
{
- Debug.Log($"距离太大了, 启用补间: len: {len}, maxL: {maxL}");
+ //Debug.Log($"距离太大了, 启用补间: len: {len}, maxL: {maxL}");
var count = Mathf.CeilToInt(len / maxL);
var step = new Vector2(offset.X / count, offset.Y / count);
var prevPos = prevPosition.Value - center;
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/BrushBullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/BrushBullet.cs
new file mode 100644
index 0000000..15809f5
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/BrushBullet.cs
@@ -0,0 +1,48 @@
+
+using Godot;
+
+///
+/// 带笔刷的子弹
+///
+[Tool]
+public partial class BrushBullet : Bullet
+{
+ ///
+ /// 笔刷 id
+ ///
+ [Export]
+ public string BrushId { get; set; }
+
+ ///
+ /// 生效高度, 当物体离地高度小于这个值时生效, 当值小于 0 时一直生效
+ ///
+ [Export]
+ public float EffectiveAltitude { get; set; } = -1;
+
+ private BrushImageData _brushData;
+ private Vector2I? _prevPosition;
+
+ public override void OnInit()
+ {
+ base.OnInit();
+ _brushData = LiquidBrushManager.GetBrush(BrushId);
+ }
+
+ protected override void Process(float delta)
+ {
+ base.Process(delta);
+ //测试笔刷
+ if ((EffectiveAltitude < 0 || Altitude <= EffectiveAltitude)&& AffiliationArea != null)
+ {
+ var pos = AffiliationArea.RoomInfo.LiquidCanvas.ToLiquidCanvasPosition(Position);
+ AffiliationArea.RoomInfo.LiquidCanvas.DrawBrush(_brushData, _prevPosition, pos, 0);
+ _prevPosition = pos;
+ }
+ }
+
+ public override void OnLeavePool()
+ {
+ base.OnLeavePool();
+ _prevPosition = null;
+ }
+}
\ No newline at end of file