Статистика скорости
-- Функция, которая возвращает имя "Motion Graph"
function setName()
return "Motion Graph"
end
-- Инициализация массива motions для отслеживания движения
local motions = {
0, 0
}
-- Событие обновления игрока, вызывается 20 раз в секунду
function onPlayerUpdate()
-- Вычисление скорости движения игрока и добавление ее в массив motions
table.insert(motions, math.hypot(player.getMotion()[x], player.getMotion()[z]) * 40)
-- Удаление старых значений из массива, чтобы он не рос бесконечно
if #motions > 110 then
table.remove(motions, 1)
end
end
-- Событие отрисовки на дисплее
function onDisplayDrawing(matrix)
-- Установка ширины и координат для графика
width = 110
local x = display.getWidth() / 2 - 50
local y = display.getHeight() - 50
-- Нахождение максимального значения в массиве motions
maximum = math.max(table.unpack(motions))
-- Рисование подложки для графика
display.glow(x, y - maximum, width - 1, maximum, 10, display.rgb(12, 12, 12, 128))
display.rectangle(x, y - maximum, width - 1, maximum, display.rgb(12, 12, 12, 128))
-- Настройка OpenGL для отрисовки графика
gl11.pushMatrix()
gl11.lineWidth(1)
gl11.start2D()
gl11.enable(2848)
gl11.begin(3)
-- Рисование точек графика с разными цветами
for i = 1, #motions do
gl11.color(color.get(i * 10))
gl11.vertex2d(x + i - 1, y - motions[i])
end
gl11.glEnd()
gl11.end2D()
gl11.disable(2848)
gl11.popMatrix()
end
Last updated