在996引擎中获取镜像地图中怪物坐标,可以通过以下方式实现:
```lua
-- 获取当前视野内的所有怪物
local monsters = maptools.getMonstersInCurrView()
-- 遍历怪物获取坐标
if monsters then
for idOrIndex, monObj in pairs(monsters) do
-- 方法1:获取怪物地图坐标(网格坐标)
local mapX, mapY = maptools.getObjMapPos(monObj)
SL:Print("怪物"..idOrIndex.."地图坐标:", mapX, mapY)
-- 方法2:获取怪物UI节点坐标(世界坐标)
local uiNode = maptools.getObjUi(monObj)
if uiNode and not tolua.isnull(uiNode) then
local pos = GUI:getPosition(uiNode)
SL:Print("怪物"..idOrIndex.."世界坐标:", pos.x, pos.y)
end
-- 方法3:通过actorId获取坐标
local actorPos = maptools.getActorPos(monObj.mID or idOrIndex)
if actorPos then
SL:Print("怪物"..idOrIndex.."Actor坐标:", actorPos.x, actorPos.y)
end
end
end
```
关键点说明:
1. **`maptools.getMonstersInCurrView()`** - 获取当前视野内所有怪物对象
2. **`maptools.getObjMapPos(obj)`** - 返回怪物在地图中的网格坐标(mapX, mapY)
3. **`maptools.getObjUi(obj)`** - 获取怪物的UI节点,然后使用`GUI:getPosition()`获取世界坐标
4. **`maptools.getActorPos(actorId)`** - 直接通过actorId获取坐标位置
注意:镜像地图中的怪物坐标获取方式与普通地图相同,因为引擎内部已经处理了镜像映射关系。