Постепенное изменение поворота камеры

sVor

Активный
Автор темы
135
85
Версия MoonLoader
.027.0-preview
Доброго дня.
Может кто подсказать/показать, как реализовать плавный (постепенный) поворот камеры персонажа для изменения его направления движения во время бега?
Уже находил подобное на CLEO, но в LUA не видел
 
Решение
актуально?)

Функция, вставить в код скрипта:
function getCameraHeadingAngle(x, y)
    local cx, cy, _ = getActiveCameraCoordinates()
    return math.rad(getHeadingFromVector2d(x - cx, y - cy) - 90)
end

function smoothCameraRotation(time_s, angle)
    lua_thread.create(function()
        start_time = os.clock()
        local x, y, _ = getActiveCameraPointAt()
        local d_Z = getCameraHeadingAngle(x, y)
        local d_ang = angle - d_Z
        if d_ang >= -2 * math.pi and d_ang <= -1 * math.pi then
            d_ang = d_ang + 2 * math.pi
        elseif d_ang >= math.pi and d_ang <= 2 * math.pi then
            d_ang = d_ang - 2 * math.pi
        end
        local c_time = start_time
        while c_time <= start_time + time_s do...

Vintik

Мечтатель
Проверенный
1,469
917
актуально?)

Функция, вставить в код скрипта:
function getCameraHeadingAngle(x, y)
    local cx, cy, _ = getActiveCameraCoordinates()
    return math.rad(getHeadingFromVector2d(x - cx, y - cy) - 90)
end

function smoothCameraRotation(time_s, angle)
    lua_thread.create(function()
        start_time = os.clock()
        local x, y, _ = getActiveCameraPointAt()
        local d_Z = getCameraHeadingAngle(x, y)
        local d_ang = angle - d_Z
        if d_ang >= -2 * math.pi and d_ang <= -1 * math.pi then
            d_ang = d_ang + 2 * math.pi
        elseif d_ang >= math.pi and d_ang <= 2 * math.pi then
            d_ang = d_ang - 2 * math.pi
        end
        local c_time = start_time
        while c_time <= start_time + time_s do
            local c_angle = d_Z + d_ang * (c_time - start_time) / time_s
            setCameraPositionUnfixed(0, c_angle)
            wait(0)
            c_time = os.clock()
        end
        setCameraPositionUnfixed(0, angle)
    end)
end
Пример, плавно переводим камеру на координаты (X = 0, Y = 0) за 2 секунды:
smoothCameraRotation(2, getCameraHeadingAngle(0, 0))
Должно работать, по идее)
 
Последнее редактирование:
  • Нравится
Реакции: sVor

wojciech?

Известный
206
120
но и адреса/функции я не нашёл, а искать ой как не хочу
function getCameraHeadingAngle(x, y) local cx, cy, _ = getActiveCameraCoordinates() return math.rad(getHeadingFromVector2d(x - cx, y - cy) - 90.0) end
если в твою функцию передать x и y из getActiveCameraPointAt(), то можно получить угол вращения камеры по горизонтали
 
  • Влюблен
  • Нравится
Реакции: sVor и Vintik