调整linkdoor
This commit is contained in:
@@ -548,9 +548,15 @@ namespace BaseGames.Editor
|
||||
|
||||
Vector3 basePos = GetDropPosition();
|
||||
|
||||
// ── 共同父节点 ────────────────────────────────────────────────────
|
||||
GameObject parent = new GameObject("LinkedDoorPair");
|
||||
Undo.RegisterCreatedObjectUndo(parent, "Place LinkedDoorPair Root");
|
||||
parent.transform.position = basePos;
|
||||
|
||||
// ── 门 A ─────────────────────────────────────────────────────────
|
||||
GameObject goA = new GameObject("LinkedDoor_A");
|
||||
Undo.RegisterCreatedObjectUndo(goA, "Place LinkedDoor_A");
|
||||
Undo.SetTransformParent(goA.transform, parent.transform, "Parent LinkedDoor_A");
|
||||
goA.transform.position = basePos + new Vector3(-3f, 0f, 0f);
|
||||
SetLayer(goA, "TriggerZone", report);
|
||||
|
||||
@@ -558,18 +564,18 @@ namespace BaseGames.Editor
|
||||
colA.isTrigger = true;
|
||||
colA.size = new Vector2(1.5f, 2.5f);
|
||||
|
||||
SetupSpriteRenderer(goA);
|
||||
GetOrAddComponent<Animator>(goA);
|
||||
AnimancerComponent animancerA = GetOrAddComponent<AnimancerComponent>(goA);
|
||||
Transform spawnA = GetOrCreateChild(goA.transform, "SpawnPoint");
|
||||
spawnA.localPosition = new Vector3(1.2f, 0f, 0f); // 门右侧走出
|
||||
|
||||
LinkedDoorTransition doorA = GetOrAddComponent<LinkedDoorTransition>(goA);
|
||||
AssignBool(doorA, "_autoTrigger", true);
|
||||
AssignReference(doorA, "_animancer", animancerA, report);
|
||||
AssignInt(doorA, "_facingDirectionOnArrive", 1); // 朝右走出
|
||||
AssignReference(doorA, "_spawnPoint", spawnA, report);
|
||||
AssignInt(doorA, "_facingDirectionOnArrive", 1); // 朝右走出
|
||||
|
||||
// ── 门 B ─────────────────────────────────────────────────────────
|
||||
GameObject goB = new GameObject("LinkedDoor_B");
|
||||
Undo.RegisterCreatedObjectUndo(goB, "Place LinkedDoor_B");
|
||||
Undo.SetTransformParent(goB.transform, parent.transform, "Parent LinkedDoor_B");
|
||||
goB.transform.position = basePos + new Vector3(3f, 0f, 0f);
|
||||
SetLayer(goB, "TriggerZone", report);
|
||||
|
||||
@@ -577,30 +583,27 @@ namespace BaseGames.Editor
|
||||
colB.isTrigger = true;
|
||||
colB.size = new Vector2(1.5f, 2.5f);
|
||||
|
||||
SetupSpriteRenderer(goB);
|
||||
GetOrAddComponent<Animator>(goB);
|
||||
AnimancerComponent animancerB = GetOrAddComponent<AnimancerComponent>(goB);
|
||||
Transform spawnB = GetOrCreateChild(goB.transform, "SpawnPoint");
|
||||
spawnB.localPosition = new Vector3(-1.2f, 0f, 0f); // 门左侧走出
|
||||
|
||||
LinkedDoorTransition doorB = GetOrAddComponent<LinkedDoorTransition>(goB);
|
||||
AssignBool(doorB, "_autoTrigger", true);
|
||||
AssignReference(doorB, "_animancer", animancerB, report);
|
||||
AssignInt(doorB, "_facingDirectionOnArrive", -1); // 朝左走出
|
||||
AssignReference(doorB, "_spawnPoint", spawnB, report);
|
||||
AssignInt(doorB, "_facingDirectionOnArrive", -1); // 朝左走出
|
||||
|
||||
// ── 互相绑定 ─────────────────────────────────────────────────────
|
||||
AssignReference(doorA, "_linkedDoor", doorB, report);
|
||||
AssignReference(doorB, "_linkedDoor", doorA, report);
|
||||
|
||||
report.Add("LinkedDoor_A ↔ LinkedDoor_B 已互相绑定。");
|
||||
report.Add("将两扇门分别移到场景中正确位置(如两个区域的入口处)。");
|
||||
report.Add("调整 _spawnOffset 使玩家传送后不被触发器再次捕获(如偏移 1f 让玩家落在门外侧)。");
|
||||
report.Add("LinkedDoor_A ↔ LinkedDoor_B 已互相绑定,统一挂在 LinkedDoorPair 父节点下。");
|
||||
report.Add("将两扇门移到场景中正确位置后,拖动各自的子节点 SpawnPoint 调整玩家传送到达位置。");
|
||||
report.Add("转场效果:在各门 GameObject 上添加 SceneFeedback 组件并绑定 MMF_Player(如淡入淡出),再将其拖入 _transitionOut(淡出)和 _transitionIn(淡入)字段。");
|
||||
report.Add("_facingDirectionOnArrive:A→B 时玩家朝向由 B 的该值决定,B→A 反之。");
|
||||
report.Add("若需门动画,将 AnimationClip 拖入各自的 _openClip / _enterClip。");
|
||||
|
||||
Undo.CollapseUndoOperations(undoGroup);
|
||||
|
||||
// 选中 A(便于立即调整位置)
|
||||
Selection.activeGameObject = goA;
|
||||
MarkDirtyAndLog("Linked Door Pair (Same-Scene)", goA, report);
|
||||
Selection.activeGameObject = parent;
|
||||
MarkDirtyAndLog("Linked Door Pair (Same-Scene)", parent, report);
|
||||
}
|
||||
|
||||
[MenuItem("BaseGames/Scene/Place/Camera Area", priority = 140)]
|
||||
|
||||
Reference in New Issue
Block a user