---
title: "Teleport"
description: "坐标传送、标记点传送、地图传送。"
---

---
title: Teleport
description: 坐标传送、标记点传送、地图传送。
---

`include/XBase/Teleport.h` · `XBase::Teleport`

> 传送动作在 XBase 后端内完成对象校验、场景流式加载与水上/水下处理；宿主只提交坐标和模式。支持情况由 `FeatureCapability::TeleportBasic` 控制，宿主不应直接调用 `Teleport::Process()`。

```cpp
struct MapBounds {
    float minX = 0.0f;
    float minY = 0.0f;
    float maxX = 0.0f;
    float maxY = 0.0f;
};

bool TryGetCurrentPosition(Vec3& position);
Vec3 GetCurrentPosition();
bool TryGetMapBounds(MapBounds& bounds);
bool To(float x, float y, float z, int interior = 0);
bool Forward(float distance);
bool MapPosition(float x, float y, bool spawnUnderwater = false);
bool Marker(bool spawnUnderwater = false);
bool Center();
void Process();
```

- `TryGetCurrentPosition` — 读取当前位置；玩家不可用时返回 `false`，`position` 保持不变。
- `GetCurrentPosition` — 便捷读取，失败时返回安全默认值。
- `TryGetMapBounds` — 按雷达范围与原点推导地图边界，供地图坐标与屏幕像素换算；雷达数据不可用时返回 `false`。
- `To` — 传送到指定坐标；玩家在载具内时会保留载具并重新落位。
- `Forward` — 朝面前方向移动指定距离。
- `MapPosition` — 按地图坐标传送（x，y 自动计算地面 z），可选水面落点。
- `Marker` — 传送到雷达标记点；没有标记时返回 `false`，仅 SA 实现。
- `Center` — 传送到世界原点。

`Teleport::Process()` 没有宿主可见的持续策略；领域启用后仍由 `Core::Process()` 统一调度，宿主不要直接调用。
