diff --git a/DungeonShooting_Godot/scene/Hall.tscn b/DungeonShooting_Godot/scene/Hall.tscn
index ccaeecf..cd7b366 100644
--- a/DungeonShooting_Godot/scene/Hall.tscn
+++ b/DungeonShooting_Godot/scene/Hall.tscn
@@ -108,6 +108,7 @@
position = Vector2(4, -14)
script = ExtResource("5_lowqi")
Id = "item_0031"
+ShadowZIndex = 0
CollisionVisible = false
[node name="Item0013" type="Node2D" parent="ItemRoot" index="3"]
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityInstance.cs b/DungeonShooting_Godot/src/framework/activity/ActivityInstance.cs
index b693bdc..3306940 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityInstance.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityInstance.cs
@@ -93,6 +93,40 @@
}
///
+ /// 动画精灵的z轴索引
+ ///
+ [Export]
+ public int SpriteZIndex
+ {
+ get => _spriteZIndex;
+ set
+ {
+ _spriteZIndex = value;
+ if (_activityObject != null)
+ {
+ _activityObject.AnimatedSprite.ZIndex = value;
+ }
+ }
+ }
+
+ ///
+ /// 阴影z轴索引
+ ///
+ [Export]
+ public int ShadowZIndex
+ {
+ get => _shadowZIndex;
+ set
+ {
+ _shadowZIndex = value;
+ if (_activityObject != null)
+ {
+ _activityObject.ShadowSprite.ZIndex = value;
+ }
+ }
+ }
+
+ ///
/// 是否启用垂直运动模拟
///
[Export]
@@ -121,6 +155,8 @@
private bool _showShadow = true;
private Vector2 _showOffset = new Vector2(0, 2);
private float _altitude;
+ private int _spriteZIndex = 0;
+ private int _shadowZIndex = -1;
private Vector2 _collPos;
private bool _createFlag = false;
@@ -248,11 +284,17 @@
activityObject.Visible = Visible;
activityObject.ShadowOffset = _showOffset;
activityObject.Altitude = _altitude;
+ activityObject.AnimatedSprite.ZIndex = _spriteZIndex;
+ activityObject.ShadowSprite.ZIndex = _shadowZIndex;
activityObject.EnableVerticalMotion = VerticalMotion;
if (!_isNested)
{
activityObject.PutDown(DefaultLayer, _showShadow);
}
+ else
+ {
+ activityObject.ShowShadowSprite();
+ }
var children = GetChildren();
foreach (var child in children)
@@ -263,13 +305,14 @@
{
o._isNested = true;
var instance = o.DoCreateObject();
+ activityObject.AddChild(instance);
if (instance is IMountItem mountItem)
{
activityObject.AddMountObject(mountItem);
}
- else
+ else if (instance is IDestroy destroy)
{
- activityObject.AddChild(instance);
+ activityObject.AddDestroyObject(destroy);
}
}
else