48 lines
950 B
Lua
48 lines
950 B
Lua
local GPS = require('opus.gps')
|
|
local Util = require('opus.util')
|
|
local Point = require('opus.point')
|
|
local Proxy = require('core.proxy')
|
|
|
|
local os = _G.os
|
|
|
|
local args = { ... }
|
|
local remoteId = args[1] or error('mobFollow REMOTE_ID')
|
|
local ni = Proxy.create(remoteId, 'device/neuralInterface')
|
|
|
|
if not ni then
|
|
error('failed to connect')
|
|
end
|
|
|
|
local lpt = nil
|
|
|
|
while true do
|
|
local pt = GPS.locate(2)
|
|
|
|
if not pt then
|
|
print('No GPS')
|
|
else
|
|
local gpt = Util.shallowCopy(pt)
|
|
if pt and lpt and Point.same(pt, lpt) then
|
|
-- havent moved
|
|
print('no move')
|
|
else
|
|
if not lpt then
|
|
gpt.x = gpt.x - 2
|
|
else
|
|
local dx = lpt.x - pt.x
|
|
local dz = lpt.z - pt.z
|
|
local angle = math.atan2(dx, dz)
|
|
gpt.x = pt.x + 2.5 * math.sin(angle)
|
|
gpt.z = pt.z + 2.5 * math.cos(angle)
|
|
end
|
|
lpt = pt
|
|
local s, m = ni.goTo(gpt.x, gpt.y + 1, gpt.z)
|
|
if not s then
|
|
print(m)
|
|
end
|
|
end
|
|
end
|
|
|
|
os.sleep(.5)
|
|
end
|