using UnityEngine; namespace BaseGames.World { /// /// 玩家出生点标记。RoomController 通过 transitionId 查找匹配的出生点。 /// public class PlayerSpawnPoint : MonoBehaviour { [SerializeField] private string _transitionId; [Tooltip("+1 = 朝右出生,-1 = 朝左出生")] [SerializeField] private int _facingDirection = 1; [Tooltip("(可选)此出生点对应的出口门。\n" + "玩家在此出生后,调用 TriggerExitDoor() 播放门的进入动画(玩家从门里走出)。\n" + "仅在使用 DoorTransition 的场景中需要配置。")] [SerializeField] private DoorTransition _exitDoor; public string TransitionId => _transitionId; public Vector2 SpawnPosition => transform.position; /// 玩家出生时的朝向(+1 右,-1 左)。 public int FacingDirection => _facingDirection; /// 此出生点关联的出口门(可为 null)。 public DoorTransition ExitDoor => _exitDoor; /// /// 触发出口门的进入动画(玩家从门内侧走出)。 /// 无关联门时静默跳过。由负责放置玩家的系统在玩家落点后调用。 /// public void TriggerExitDoor() => _exitDoor?.PlayEnterAnimation(); private void OnDrawGizmos() { Gizmos.color = Color.green; Gizmos.DrawWireSphere(transform.position, 0.3f); Gizmos.DrawLine(transform.position, transform.position + Vector3.up * 0.5f); // 门关联指示线 if (_exitDoor != null) { Gizmos.color = new Color(0.7f, 0.3f, 1f, 0.6f); Gizmos.DrawLine(transform.position, _exitDoor.transform.position); } } } }