diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index 7055f90..f2e379a 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -69,8 +69,19 @@
///
/// 当前物体归属的区域, 如果为 null 代表不属于任何一个区域
///
- public AffiliationArea Affiliation { get; set; }
-
+ public AffiliationArea Affiliation
+ {
+ get => _affiliationArea;
+ set
+ {
+ if (value != _affiliationArea)
+ {
+ _affiliationArea = value;
+ OnAffiliationChange();
+ }
+ }
+ }
+
//组件集合
private List> _components = new List>();
//是否初始化阴影
@@ -96,9 +107,13 @@
//标记字典
private Dictionary _signMap;
+ //开启的协程
private List _coroutineList;
+ //模板实例
private ActivityObjectTemplate _templateInstance;
+ private AffiliationArea _affiliationArea;
+
private static long _instanceIndex = 0;
//初始化节点
@@ -322,6 +337,13 @@
}
///
+ /// 归属区域发生改变
+ ///
+ protected virtual void OnAffiliationChange()
+ {
+ }
+
+ ///
/// 返回当物体 CollisionLayer 是否能与 layer 层碰撞
///
public bool CollisionWithLayer(uint layer)
diff --git a/DungeonShooting_Godot/src/game/role/Role.cs b/DungeonShooting_Godot/src/game/role/Role.cs
index 2855d3e..b05f635 100644
--- a/DungeonShooting_Godot/src/game/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/role/Role.cs
@@ -290,6 +290,15 @@
}
}
+ protected override void OnAffiliationChange()
+ {
+ //身上的武器的所属区域也得跟着变
+ Holster.ForEach((weapon, i) =>
+ {
+ weapon.Affiliation = Affiliation;
+ });
+ }
+
///
/// 获取当前角色的中心点坐标
///