Хочу сделать в карте отдаление/приблежение камеры по нажатию кпопок +-.
Подскажите как это сделать, или какой-то вариант. Заранее благодарен
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
Отловить нажатие кнопок +- и в зависимости от нажатия отдалять или приближать камеру.
Ответы (5)
26
nazarpunk, чтобы приготовить борщ надо приготовить борщ :D
30
konvan5, в чём мой ответ неверен?
Задача делится на две подзадачи:
  • отлов нажатий
  • манипуляция с камерой
С чем проблема у автора я так и не понял.
26
nazarpunk, все верно, ответ в вопросе :D
Думаю автор хотел узнать пример реализации со скринами, видео, кодом, как ниже от Makeba, (наверное).
30
konvan5, получается, что это классический "сделайте всё за меня" момент.
28
nazarpunk, если ты знал, что ответ в вопросе, и он делится на простые метафизические задачи, то зачем было разводить полемику, осознавая что решением будет "сделайте всё за меня"?
26
В каком варике делаешь карту? Если на 1.26а, то стандартным способом нельзя, разве что мемхаки использовать :D
26
Базовый пример для Reforged. Остерегайтесь залипаний клавиш!
тысячи строк кода
CamKeys = {
    --задаём здесь желаемые клавиши на отдаление и приближение
    up = OSKEY_ADD,
    down = OSKEY_SUBTRACT
}

CamKeysShift = {
    --здесь задаём расстояние, на которое будет сдвигаться камера каждый тик таймера
    [CamKeys.up] = 7,
    [CamKeys.down] = -7,
}

CamKeysState = {
    [CamKeys.up] = false,
    [CamKeys.down] = false,
}

function initCamKeys()
    --инициализация триггоров на клавиши камеры и таймера опроса клавиш
    local camTrigger, releaseCamTrigger = CreateTrigger(), CreateTrigger()

    for _, value in pairs(CamKeys) do
        BlzTriggerRegisterPlayerKeyEvent(camTrigger, GetLocalPlayer(), value, 0, true)
        BlzTriggerRegisterPlayerKeyEvent(releaseCamTrigger, GetLocalPlayer(), value, 0, false)
    end

    TriggerAddCondition(camTrigger, Condition(controlCamKeys))
    TriggerAddCondition(releaseCamTrigger, Condition(controlCamKeysRelease))

    local t = CreateTimer()
    TimerStart(t, 0.01, true, function() setCameraDistance() end)
end

function controlCamKeys()
    CamKeysState[BlzGetTriggerPlayerKey()] = true
end

function controlCamKeysRelease()
    CamKeysState[BlzGetTriggerPlayerKey()] = false
end

function setCameraDistance()
    local shift = 0
    for k, v in pairs(CamKeysState) do
        local kShift = CamKeysShift[k]
        if v then
           shift = shift + kShift
        end
    end

    if shift ~= 0 then
        SetCameraFieldForPlayer( GetLocalPlayer(), CAMERA_FIELD_TARGET_DISTANCE, GetCameraField(CAMERA_FIELD_TARGET_DISTANCE) + shift, 0.00 )
    end
end
23
На 1.26 можно сделать только через отлов стрелок вверх вниз влево вправо
Чтобы оставить комментарий, пожалуйста, войдите на сайт.