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