Боже почему синематик мод такой сложный, я даже в мемхаке за час разобрался полностью, а здесь за сутки не могу, хочу сделать такой ролик ,а это тупое ***** не хочет никак работать, почему у меня не получается двинуть вид к камере?
Зачем столько мусорных функций для работы с камерой, я хочу просто создать в редакторе камеру, хочу включить синематик мод и вызовом одной функции направить вид всех игроков на эту камеру, почему это не работает?! Почему нет функции вроде SwitchViewToCamera или как-то так
Ниче не работает, ни фейд, ни камера, ничего вообще
		CinematicModeBJ(true, g_OnlinePlayers);
		SetUserControlForceOff(g_OnlinePlayers);
		TriggerSleepAction(0.10);
		CinematicFadeBJ(bj_CINEFADETYPE_FADEOUT, 0.45, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0, 0, 0, 0);
		TriggerSleepAction(0.50);
		CameraSetupSetField(gg_cam_Cam1Mid,CAMERA_FIELD_TARGET_DISTANCE,1300,3)
		ShowInterfaceForceOff(bj_FORCE_PLAYER[0], 0.50);
		CinematicFadeBJ(bj_CINEFADETYPE_FADEIN, 0.50, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0, 0, 0, 0);
		TriggerSleepAction(0.10);

Принятый ответ

Drulia_san, потому что никто из близзардов и видимо не рассчитывал еще на динамичные повороты юнитов. функции камер надо разобрать
нативки камеры
сместить обзор (положение) камеры в обзор другой камеры (camerasetup)
камера GetLocalPlayer() смещается в камеру camerasetup
real duration - время перехода, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленнее движется в эту точку
native CameraSetupApplyForceDuration takes camerasetup whichSetup, boolean doPan, real forceDuration returns nothing
временно сместить камеру игрока в точку
центр камеры игрока смещается в заданную точку (x,y), и держит несколько секунд в этом положении
real duration - время, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленее движется в эту точку
native PanCameraToTimed takes real x, real y, real duration returns nothing
временно сместить камеру игрока с интерполиров. высотой в точку
центр камеры игрока смещается в заданную точку (x,y)
Камера не будет погружаться под землю при перемещении по маршруту.
Эта функция очень хороша, если вы находитесь на раздражающе холмистой карте. Это в основном сделает так, что он будет подниматься по местности, чтобы высота была несколько постоянной от земли. Это добавит 300 к высоте земли под ним, а не к фактической контрольной точке Z, равной 0. (Таким образом, если вы перемещаете что-либо, оно не будет оставаться на постоянной высоте, оно будет меняться в зависимости от местности)
real duration - время перехода, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленее движется в эту точку
native PanCameraToTimedWithZ takes real x, real y, real zOffsetDest, real duration returns nothing
native CameraSetupApplyWithZ takes camerasetup whichSetup, real zDestOffset returns nothing
временно сместить камеру игрока в точку (при необходимости)
real duration - время перехода, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленее движется в эту точку
Если камера очень далеко, она переключится, а не переместится. Если камера очень близко, то запрос на перемещение будет пропущен.
Это BJ-функция. Определяет, находится ли объект камеры слишком близко или слишком далеко. Если он слишком близко, он ничего не сделает. (Камера вообще не будет перемещаться). Если она находится слишком далеко, камера мгновенно передвинет к месту через 0 секунд. Если расстояние между камерой и точкой находится в определенном диапазоне, то камеру будет смещать. За исключением того, что это вызывает рассинхронизацию! Он использует "GetCameraTargetPositionLoc ()"
function SmartCameraPanBJ takes player whichPlayer, location loc, real duration returns nothing
    local real dist
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.

        set dist = DistanceBetweenPoints(loc, GetCameraTargetPositionLoc())
        if (dist >= bj_SMARTPAN_TRESHOLD_SNAP) then
            // If the user is too far away, snap the camera.
            call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), 0)
        elseif (dist >= bj_SMARTPAN_TRESHOLD_PAN) then
            // If the user is moderately close, pan the camera.
            call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), duration)
        else
            // User is close enough, so don't touch the camera.
        endif
    endif
endfunction
установить Поле Камеры (или настройки обзора текущей камеры)
native SetCameraField takes camerafield whichField, real value, real duration returns nothing
есть несколько настроек (camerafield):
    constant camerafield CAMERA_FIELD_TARGET_DISTANCE       = ConvertCameraField(0)
    constant camerafield CAMERA_FIELD_FARZ                  = ConvertCameraField(1)
    constant camerafield CAMERA_FIELD_ANGLE_OF_ATTACK       = ConvertCameraField(2)
    constant camerafield CAMERA_FIELD_FIELD_OF_VIEW         = ConvertCameraField(3)
    constant camerafield CAMERA_FIELD_ROLL                  = ConvertCameraField(4)
    constant camerafield CAMERA_FIELD_ROTATION              = ConvertCameraField(5)
    constant camerafield CAMERA_FIELD_ZOFFSET               = ConvertCameraField(6)
константы (это настройки по умолчанию). Если вам надо сбросить настройки, вот вы знаете где взять. Еще можно в редакторе карт создать камеру, и посмотреть характеристики.
Созданная камера по умолчанию задает эти характеристики.
constant integer bj_CAMERA_DEFAULT_AOA=304
constant integer bj_CAMERA_DEFAULT_DISTANCE=1650
constant integer bj_CAMERA_DEFAULT_FARZ=5000
constant integer bj_CAMERA_DEFAULT_FOV=70
constant integer bj_CAMERA_DEFAULT_ROLL=0
constant integer bj_CAMERA_DEFAULT_ROTATION=90
constant integer bj_CAMERA_MIN_FARZ=100
CAMERA_FIELD_TARGET_DISTANCE - расстояние до цели - это расстояние между глазом камеры и цели. Можете так отдалить камеру от земли, так и приблизить. Это также влияет и на область обзора, чем ближе камера, тем меньше обзора охватывает камера (просто видите увеличенную картинку в маалюсенькой области). Значение по умолчанию равно 1650.
CAMERA_FIELD_FARZ - дальность по оси Z - так понял это определяет как далеко видит камера, объекты прорисовывают и так далее. Если значение прописать слишком маленькие, то это у вас уйдет за черный экран (то есть вообще ничего не видит, обычно дальние объекты за черный туман уходят, даже если у вас карта открыта). По умолчанию значение равно 5000. Еще раз для тех кто в танке
Far Z - изменяет диапазон, в котором видны удаленные объекты. Допустим, дерево находится на расстоянии 10000 координат. Вы можете установить 10 000, чтобы увидеть это дерево. Максимум на самом деле 10000. Даже если вы установите его выше в триггерах, он, скорее всего, будет иметь тот же эффект, что и 10000. Будьте осторожны, делая это, может помочь улучшить видимость местности издалека, но в реальных играх это может привести к фаталу. Это, вероятно, один из самых впечатляющих визуальных эффектов. Если вы установите слишком высокое значение и увидите слишком много объектов, это может снизить FPS (количество кадров в секунду, тип / fps в игре) на 20 или больше. В конечном счете, это зависит от угла атаки, но если будет видно слишком много объектов, то это, как правило, вызывает большое отставание.
CAMERA_FIELD_FIELD_OF_VIEW - поле зрения или величина обзора камеры - это в основном влияет на количество области, которую вы видите в вашей камере. Своего рода zoom. Зум это по-русски «масштаб» или «мера приближения». Есть определенный диапазон от 20 до 120. Ниже или выше этого диапазона невозможно ввести, ты вводишь, но ничего не происходит. Значение по умолчанию равна 70.
CAMERA_FIELD_ANGLE_OF_ATTACK - угол атаки (от 0 до 360) - Наклон камеры относительно земли:
0 = горизонтальный вид (половина камеры лежит в земле, вторая половина на поверхности)
90 - вид снизу, камера направлена вверх и находится под землей;
180 - горизонтальный вид (это перевернутая сверх ногами камера, половина камеры лежит в земле, вторая половина на поверхности)
270 = вид сверху, камера напрвлена вниз и находится над землей
304 градуса это стандартная игровая камера AoA.
Приблизительно 345 градусов или около того обычно используется для RPG-подобных камер.
CAMERA_FIELD_ROLL - крен - угол вращения камеры вокруг оси. камеру можно вращать вбок (влево-вправо). По умолчанию значение равно 0. Значения для ввода должны быть в диапазоне 1-360 градусов.
CAMERA_FIELD_ROTATION - повороты (вращения) - вращает объект. 90 градусов направлены на север, 180 градусов - на запад, 270 градусов - на юг, а 360/0 градусов - на восток. Значения для ввода должны быть в диапазоне 1-360 градусов.
CAMERA_FIELD_ZOFFSET - граница высот (смещение камеры по оси Z) - Z-Offset - высота камеры от земли. Вся камера перемещается вверх и, таким образом, имеет увеличенное значение «Z». Z-координаты - это, в основном, высота объектов, то, как высоко что-то от стандартной позиции на земле, равной 0.
вращение камеры вокруг точки
делает повороты вокруг точки (x,y). текущий угол поворота камеры по умолчанию равен 0. узнать текущий угол поворота можно еще с помощью этой функции GetCameraField(CAMERA_FIELD_ROTATION). Так вот, если вы вводите значение угла, то будет происходить поворот камеры от текущего угла к нужному. измеряется в радианах (можете перевести из градусов)
native SetCameraRotateMode takes real x, real y, real radiansToSweep, real duration returns nothing
прикрепить камеру к юниту
центром камеры является юнит. Куда сдвинется юнит, туда и камера последует. Камеру за все время следования невозможно сдвинуть за границы, чтобы посмотреть и тд. Это отлично подходит для RPG и односимвольных карт, так как вы можете легко прикрепить камеру к герою. Камера будет прикреплена, даже, если герой умрет.
  • Центр камеры можно сместить, это ввести координату смещения (x,y) от позиции юнита. Тогда положение камеры будет гулять относительно позиции героя (это мб сбоку находиться, ниже или наверху. в зависимости от значении координат. Может и пропасть из виду герой, если ввести большое значение координаты)
  • Можно еще поворачивать камеру. Rotation Source (источник поворота, на jass boolean inheritOrientation) - true (Поворот боевой единицы)/false (По умолчанию). По умолчанию = 0 град, Поворот боевой единицы - на самом деле это никакой не поворот боевой единицы, в гуи неправильно перевели. Это берут за основу поворот текущей камеры, ее можно изменять. И относительно ее вращают камеру. У вас всегда будет повернут на этот угол. Возможно можно изменять триггерно, и камера примет другой поворот.
  • Если нужно открепить камеру от героя, используйте сброс Reset Game Camera
native SetCameraTargetController takes unit whichUnit, real xoffset, real yoffset, boolean inheritOrientation returns nothing
прикрепить ориентир камеры к юниту
центром камеры является юнит. Куда сдвинется юнит, туда и камера будет поворачиваться. Отличие от SetCameraTargetController в том, что камера не двигается следом за юнитом, она находится в одной точке, глаз камеры наблюдает за юнитом с этой позиции (юнит может убежать далеко и его будет не видно), где он находился до SetCameraOrientController. Эта штука очень хорошо работает, если нужно наблюдать со стороны за движением юнита (когда приезжает издалека, и уезжает в даль). Камеру за все время следования невозможно сдвинуть за границы, чтобы посмотреть и тд. Это отлично подходит для RPG и односимвольных карт, так как вы можете легко прикрепить камеру к герою. Камера будет прикреплена, даже, если герой умрет.
  • Центр камеры можно сместить, это ввести координату смещения (x,y) от позиции юнита. Тогда положение камеры будет гулять относительно позиции героя (это мб сбоку находиться, ниже или наверху. в зависимости от значении координат. Может и пропасть из виду герой, если ввести большое значение координаты)
  • Можете проверять расстояние между юнитом и текущей камерой для смены позиции
  • Если нужно открепить камеру от героя, используйте сброс Reset Game Camera
native SetCameraOrientController takes unit whichUnit, real xoffset, real yoffset returns nothing
Запустить Кинематографическую камеру
Play Cinematic Camera - Применяет файл модели камеры. В MPQ содержатся специальные модели камер, о которых я расскажу позже (см. внизу ссылки).
native SetCinematicCamera takes string cameraModelFile returns nothing
Остановить камеру - прекращает движение камеры. Такие вещи, как «Apply Camera Object (Timed)» или панорамирование, будут остановлены.
native StopCamera takes nothing returns nothing
Сброс игровой камеры - полезная камера, которая сбрасывает значения текущей камеры по умолчанию (значения в константах выше). (Например: dist = 1650, AoA = 304)
native ResetToGameCamera takes real duration returns nothing
Изменить Сглаживающий фактор камеры
Изменить коэффициент сглаживания камеры - Да, вы можете подумать: «Эй, я могу сделать свои камеры более плавными». Ну, это не совсем то, что делает, к сожалению. Это делает прокрутку более плавной, с помощью кнопок со стрелками или с помощью мыши.
Так понял плавность имеется в виду, насколько быстро смещается камера при поворотах, разворотах, смещении. Можно ставить самое большое значение 999999к. Чтобы сбросить, нужно ввести значене по умолчанию 0 (в BJ функции там так и сделано).
native CameraSetSmoothingFactor takes real factor returns nothing
Трясти Камеру по Горизонтали
Повернуть камеру по Горизонтали для ", Player," с увеличением ", Magnitude," и скоростью ", Velocity
Это приведет к небольшому «колебанию» камеры, перемещая ее вперед-вниз. Величина магнитуды определяет, насколько разрушительным / экстремальным является влияние. Низкая величина вряд ли будет заметна. Скорость velocity определяет, как быстро она будет колебаться. Установите их оба высоко, и вы будете в поездке. Это полезно для кинематографа, когда вы хотите, чтобы произошло какое-то большое событие. Это повлияет на источник или точку птичьего полета.
Подсказка: Будет трясти камеру до тех пор, пока не вызовут функции 'Камера - Сбросить Игровую Камеру' или 'Камера - Прекратить Тряску/Поворот Камеры
Мнение: эта штука напоминает из эпизодов одного фильма, где-нибудь в каком-нибудь автобусе сладкая парочка занимается энтимным делом.
native CameraSetSourceNoise takes real mag, real velocity returns nothing
Вращать Цель Камеры (раскачивать камеру)
Вращать Цель Камеры для ", Player," с увеличением ", Magnitude," и скоростью ", Velocity
Sway Camera Target - та же, что и выше, но вместо этого она качает цель. Это будет иметь другой вид эффекта, но все же так же круто.
Подсказка: Будет трясти камеру до тех пор, пока не вызовут функции 'Камера - Сбросить Игровую Камеру' или 'Камера - Прекратить Тряску/Поворот Камеры
Мнение: эта штука напоминает так будто тебя в море лодку раскачивает
native CameraSetTargetNoise takes real mag, real velocity returns nothing
Трясти камеру
Трясти камеру для ", Player," с увеличением ", Magnitude
Трясти камеру - вызовет эффект тряски при землетрясении или обвале шахты, сильно трясется. Blizzard делает хорошие вычисления. Это просто продолжительный эффект раскачивания. По сути, он умножит входную величину на 2, а для скорости он умножит величину * 10 ^ Рихтера. Если входная величина больше 5, то значение Рихтера будет 5. Если оно равно 2-5, тогда оно будет установлено на это значение, а если оно меньше 2, оно будет установлено на 2. Так что вы вводите величина 10, это будет 10 * 10 ^ 5 для скорости, или 1 000 000. Это приводит к очень высоким частотам изменения, напоминающим эффект «грохота». Отличная функция для "мощных" способностей и боевой кинематографии.
Подсказка: Будет трясти камеру до тех пор, пока не вызовут функции 'Камера - Сбросить
Игровую Камеру' или 'Камера - Прекратить Тряску/Поворот Камеры
function CameraSetEQNoiseForPlayer takes player whichPlayer, real magnitude returns nothing
    local real richter = magnitude
    if (richter > 5.0) then
        set richter = 5.0
    endif
    if (richter < 2.0) then
        set richter = 2.0
    endif
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call CameraSetTargetNoiseEx(magnitude*2.0, magnitude*Pow(10,richter),true)
        call CameraSetSourceNoiseEx(magnitude*2.0, magnitude*Pow(10,richter),true)
    endif
endfunction
Прекратить Тряску/Поворот Камеры
Прекратить Тряску/Поворот камеры для ", Player
Это прекращает действие 'Вращать Цель Камеры' или 'Трясти Камеру. Короче по факту обнуляет значения.
function CameraClearNoiseForPlayer takes player whichPlayer returns nothing
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call CameraSetSourceNoise(0, 0)
        call CameraSetTargetNoise(0, 0)
    endif
endfunction
Установить границы камеры
Чтобы вернуть назад:
call ResetToGameCameraForPlayer( Player(0), 0 )
call SetCameraBoundsToRectForPlayerBJ( Player(0), GetCameraBoundsMapRect() )
native SetCameraBounds takes real x1, real y1, real x2, real y2, real x3, real y3, real x4, real y4 returns nothing
за границы камеры берут границы rect
function SetCameraBoundsToRect takes rect r returns nothing
    local real minX = GetRectMinX(r)
    local real minY = GetRectMinY(r)
    local real maxX = GetRectMaxX(r)
    local real maxY = GetRectMaxY(r)
    call SetCameraBounds(minX, minY, minX, maxY, maxX, maxY, maxX, minY)
endfunction
Установить точку пробела - это позволит вам нажать клавишу пробела, чтобы привязать камеру к определенной точке.
Установить точку пробела для ", Player," в ", Point
Точка пробела - это место, в которое перемещается камера, когда игрок нажимает пробел.
Вывод: Пробел не только привязан к точке этой функции. У игрока может быть несколько точек. Пробел изначально возвращает в стартовую позицию, а потом к последнему звуковому сообщению интерфейса, например, здание построено, герой погиб, рудник истощён, юнит атакован. Повторное нажатие на пробел возвращает предыдущую позицию. Последовательность точек, чем позже событие, тем первее точка. Это сделано специально, чтобы сместить камеру к последнему событию, и посмотреть что происходить. Как очистить точки - неизвестно. Можно овер дохера точек наплодить, чтобы игрок не смог вернуться к предыдущей точке
native SetCameraQuickPosition takes real x, real y returns nothing
`
ОЖИДАНИЕ РЕКЛАМЫ...
4
16
5 лет назад
4
Я сам не понимаю, для геймплея нужных функций кот наплакал, даже юнита не повернуть, зато для камер напихали столько ненужных функций, среди которых нужные невозможно найти интуитивно разбираясь
7
27
5 лет назад
Отредактирован MpW
7
Drulia_san, потому что никто из близзардов и видимо не рассчитывал еще на динамичные повороты юнитов. функции камер надо разобрать
нативки камеры
сместить обзор (положение) камеры в обзор другой камеры (camerasetup)
камера GetLocalPlayer() смещается в камеру camerasetup
real duration - время перехода, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленнее движется в эту точку
native CameraSetupApplyForceDuration takes camerasetup whichSetup, boolean doPan, real forceDuration returns nothing
временно сместить камеру игрока в точку
центр камеры игрока смещается в заданную точку (x,y), и держит несколько секунд в этом положении
real duration - время, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленее движется в эту точку
native PanCameraToTimed takes real x, real y, real duration returns nothing
временно сместить камеру игрока с интерполиров. высотой в точку
центр камеры игрока смещается в заданную точку (x,y)
Камера не будет погружаться под землю при перемещении по маршруту.
Эта функция очень хороша, если вы находитесь на раздражающе холмистой карте. Это в основном сделает так, что он будет подниматься по местности, чтобы высота была несколько постоянной от земли. Это добавит 300 к высоте земли под ним, а не к фактической контрольной точке Z, равной 0. (Таким образом, если вы перемещаете что-либо, оно не будет оставаться на постоянной высоте, оно будет меняться в зависимости от местности)
real duration - время перехода, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленее движется в эту точку
native PanCameraToTimedWithZ takes real x, real y, real zOffsetDest, real duration returns nothing
native CameraSetupApplyWithZ takes camerasetup whichSetup, real zDestOffset returns nothing
временно сместить камеру игрока в точку (при необходимости)
real duration - время перехода, которое влияет на смещение камеры. 0.00 - смещает мгновенно камеру, time>0 - камера постепенно двигается в эту точку (и изменить положение камеры за это время не дают, и смотришь как смещается камера). Чем больше это время, тем медленее движется в эту точку
Если камера очень далеко, она переключится, а не переместится. Если камера очень близко, то запрос на перемещение будет пропущен.
Это BJ-функция. Определяет, находится ли объект камеры слишком близко или слишком далеко. Если он слишком близко, он ничего не сделает. (Камера вообще не будет перемещаться). Если она находится слишком далеко, камера мгновенно передвинет к месту через 0 секунд. Если расстояние между камерой и точкой находится в определенном диапазоне, то камеру будет смещать. За исключением того, что это вызывает рассинхронизацию! Он использует "GetCameraTargetPositionLoc ()"
function SmartCameraPanBJ takes player whichPlayer, location loc, real duration returns nothing
    local real dist
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.

        set dist = DistanceBetweenPoints(loc, GetCameraTargetPositionLoc())
        if (dist >= bj_SMARTPAN_TRESHOLD_SNAP) then
            // If the user is too far away, snap the camera.
            call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), 0)
        elseif (dist >= bj_SMARTPAN_TRESHOLD_PAN) then
            // If the user is moderately close, pan the camera.
            call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), duration)
        else
            // User is close enough, so don't touch the camera.
        endif
    endif
endfunction
установить Поле Камеры (или настройки обзора текущей камеры)
native SetCameraField takes camerafield whichField, real value, real duration returns nothing
есть несколько настроек (camerafield):
    constant camerafield CAMERA_FIELD_TARGET_DISTANCE       = ConvertCameraField(0)
    constant camerafield CAMERA_FIELD_FARZ                  = ConvertCameraField(1)
    constant camerafield CAMERA_FIELD_ANGLE_OF_ATTACK       = ConvertCameraField(2)
    constant camerafield CAMERA_FIELD_FIELD_OF_VIEW         = ConvertCameraField(3)
    constant camerafield CAMERA_FIELD_ROLL                  = ConvertCameraField(4)
    constant camerafield CAMERA_FIELD_ROTATION              = ConvertCameraField(5)
    constant camerafield CAMERA_FIELD_ZOFFSET               = ConvertCameraField(6)
константы (это настройки по умолчанию). Если вам надо сбросить настройки, вот вы знаете где взять. Еще можно в редакторе карт создать камеру, и посмотреть характеристики.
Созданная камера по умолчанию задает эти характеристики.
constant integer bj_CAMERA_DEFAULT_AOA=304
constant integer bj_CAMERA_DEFAULT_DISTANCE=1650
constant integer bj_CAMERA_DEFAULT_FARZ=5000
constant integer bj_CAMERA_DEFAULT_FOV=70
constant integer bj_CAMERA_DEFAULT_ROLL=0
constant integer bj_CAMERA_DEFAULT_ROTATION=90
constant integer bj_CAMERA_MIN_FARZ=100
CAMERA_FIELD_TARGET_DISTANCE - расстояние до цели - это расстояние между глазом камеры и цели. Можете так отдалить камеру от земли, так и приблизить. Это также влияет и на область обзора, чем ближе камера, тем меньше обзора охватывает камера (просто видите увеличенную картинку в маалюсенькой области). Значение по умолчанию равно 1650.
CAMERA_FIELD_FARZ - дальность по оси Z - так понял это определяет как далеко видит камера, объекты прорисовывают и так далее. Если значение прописать слишком маленькие, то это у вас уйдет за черный экран (то есть вообще ничего не видит, обычно дальние объекты за черный туман уходят, даже если у вас карта открыта). По умолчанию значение равно 5000. Еще раз для тех кто в танке
Far Z - изменяет диапазон, в котором видны удаленные объекты. Допустим, дерево находится на расстоянии 10000 координат. Вы можете установить 10 000, чтобы увидеть это дерево. Максимум на самом деле 10000. Даже если вы установите его выше в триггерах, он, скорее всего, будет иметь тот же эффект, что и 10000. Будьте осторожны, делая это, может помочь улучшить видимость местности издалека, но в реальных играх это может привести к фаталу. Это, вероятно, один из самых впечатляющих визуальных эффектов. Если вы установите слишком высокое значение и увидите слишком много объектов, это может снизить FPS (количество кадров в секунду, тип / fps в игре) на 20 или больше. В конечном счете, это зависит от угла атаки, но если будет видно слишком много объектов, то это, как правило, вызывает большое отставание.
CAMERA_FIELD_FIELD_OF_VIEW - поле зрения или величина обзора камеры - это в основном влияет на количество области, которую вы видите в вашей камере. Своего рода zoom. Зум это по-русски «масштаб» или «мера приближения». Есть определенный диапазон от 20 до 120. Ниже или выше этого диапазона невозможно ввести, ты вводишь, но ничего не происходит. Значение по умолчанию равна 70.
CAMERA_FIELD_ANGLE_OF_ATTACK - угол атаки (от 0 до 360) - Наклон камеры относительно земли:
0 = горизонтальный вид (половина камеры лежит в земле, вторая половина на поверхности)
90 - вид снизу, камера направлена вверх и находится под землей;
180 - горизонтальный вид (это перевернутая сверх ногами камера, половина камеры лежит в земле, вторая половина на поверхности)
270 = вид сверху, камера напрвлена вниз и находится над землей
304 градуса это стандартная игровая камера AoA.
Приблизительно 345 градусов или около того обычно используется для RPG-подобных камер.
CAMERA_FIELD_ROLL - крен - угол вращения камеры вокруг оси. камеру можно вращать вбок (влево-вправо). По умолчанию значение равно 0. Значения для ввода должны быть в диапазоне 1-360 градусов.
CAMERA_FIELD_ROTATION - повороты (вращения) - вращает объект. 90 градусов направлены на север, 180 градусов - на запад, 270 градусов - на юг, а 360/0 градусов - на восток. Значения для ввода должны быть в диапазоне 1-360 градусов.
CAMERA_FIELD_ZOFFSET - граница высот (смещение камеры по оси Z) - Z-Offset - высота камеры от земли. Вся камера перемещается вверх и, таким образом, имеет увеличенное значение «Z». Z-координаты - это, в основном, высота объектов, то, как высоко что-то от стандартной позиции на земле, равной 0.
вращение камеры вокруг точки
делает повороты вокруг точки (x,y). текущий угол поворота камеры по умолчанию равен 0. узнать текущий угол поворота можно еще с помощью этой функции GetCameraField(CAMERA_FIELD_ROTATION). Так вот, если вы вводите значение угла, то будет происходить поворот камеры от текущего угла к нужному. измеряется в радианах (можете перевести из градусов)
native SetCameraRotateMode takes real x, real y, real radiansToSweep, real duration returns nothing
прикрепить камеру к юниту
центром камеры является юнит. Куда сдвинется юнит, туда и камера последует. Камеру за все время следования невозможно сдвинуть за границы, чтобы посмотреть и тд. Это отлично подходит для RPG и односимвольных карт, так как вы можете легко прикрепить камеру к герою. Камера будет прикреплена, даже, если герой умрет.
  • Центр камеры можно сместить, это ввести координату смещения (x,y) от позиции юнита. Тогда положение камеры будет гулять относительно позиции героя (это мб сбоку находиться, ниже или наверху. в зависимости от значении координат. Может и пропасть из виду герой, если ввести большое значение координаты)
  • Можно еще поворачивать камеру. Rotation Source (источник поворота, на jass boolean inheritOrientation) - true (Поворот боевой единицы)/false (По умолчанию). По умолчанию = 0 град, Поворот боевой единицы - на самом деле это никакой не поворот боевой единицы, в гуи неправильно перевели. Это берут за основу поворот текущей камеры, ее можно изменять. И относительно ее вращают камеру. У вас всегда будет повернут на этот угол. Возможно можно изменять триггерно, и камера примет другой поворот.
  • Если нужно открепить камеру от героя, используйте сброс Reset Game Camera
native SetCameraTargetController takes unit whichUnit, real xoffset, real yoffset, boolean inheritOrientation returns nothing
прикрепить ориентир камеры к юниту
центром камеры является юнит. Куда сдвинется юнит, туда и камера будет поворачиваться. Отличие от SetCameraTargetController в том, что камера не двигается следом за юнитом, она находится в одной точке, глаз камеры наблюдает за юнитом с этой позиции (юнит может убежать далеко и его будет не видно), где он находился до SetCameraOrientController. Эта штука очень хорошо работает, если нужно наблюдать со стороны за движением юнита (когда приезжает издалека, и уезжает в даль). Камеру за все время следования невозможно сдвинуть за границы, чтобы посмотреть и тд. Это отлично подходит для RPG и односимвольных карт, так как вы можете легко прикрепить камеру к герою. Камера будет прикреплена, даже, если герой умрет.
  • Центр камеры можно сместить, это ввести координату смещения (x,y) от позиции юнита. Тогда положение камеры будет гулять относительно позиции героя (это мб сбоку находиться, ниже или наверху. в зависимости от значении координат. Может и пропасть из виду герой, если ввести большое значение координаты)
  • Можете проверять расстояние между юнитом и текущей камерой для смены позиции
  • Если нужно открепить камеру от героя, используйте сброс Reset Game Camera
native SetCameraOrientController takes unit whichUnit, real xoffset, real yoffset returns nothing
Запустить Кинематографическую камеру
Play Cinematic Camera - Применяет файл модели камеры. В MPQ содержатся специальные модели камер, о которых я расскажу позже (см. внизу ссылки).
native SetCinematicCamera takes string cameraModelFile returns nothing
Остановить камеру - прекращает движение камеры. Такие вещи, как «Apply Camera Object (Timed)» или панорамирование, будут остановлены.
native StopCamera takes nothing returns nothing
Сброс игровой камеры - полезная камера, которая сбрасывает значения текущей камеры по умолчанию (значения в константах выше). (Например: dist = 1650, AoA = 304)
native ResetToGameCamera takes real duration returns nothing
Изменить Сглаживающий фактор камеры
Изменить коэффициент сглаживания камеры - Да, вы можете подумать: «Эй, я могу сделать свои камеры более плавными». Ну, это не совсем то, что делает, к сожалению. Это делает прокрутку более плавной, с помощью кнопок со стрелками или с помощью мыши.
Так понял плавность имеется в виду, насколько быстро смещается камера при поворотах, разворотах, смещении. Можно ставить самое большое значение 999999к. Чтобы сбросить, нужно ввести значене по умолчанию 0 (в BJ функции там так и сделано).
native CameraSetSmoothingFactor takes real factor returns nothing
Трясти Камеру по Горизонтали
Повернуть камеру по Горизонтали для ", Player," с увеличением ", Magnitude," и скоростью ", Velocity
Это приведет к небольшому «колебанию» камеры, перемещая ее вперед-вниз. Величина магнитуды определяет, насколько разрушительным / экстремальным является влияние. Низкая величина вряд ли будет заметна. Скорость velocity определяет, как быстро она будет колебаться. Установите их оба высоко, и вы будете в поездке. Это полезно для кинематографа, когда вы хотите, чтобы произошло какое-то большое событие. Это повлияет на источник или точку птичьего полета.
Подсказка: Будет трясти камеру до тех пор, пока не вызовут функции 'Камера - Сбросить Игровую Камеру' или 'Камера - Прекратить Тряску/Поворот Камеры
Мнение: эта штука напоминает из эпизодов одного фильма, где-нибудь в каком-нибудь автобусе сладкая парочка занимается энтимным делом.
native CameraSetSourceNoise takes real mag, real velocity returns nothing
Вращать Цель Камеры (раскачивать камеру)
Вращать Цель Камеры для ", Player," с увеличением ", Magnitude," и скоростью ", Velocity
Sway Camera Target - та же, что и выше, но вместо этого она качает цель. Это будет иметь другой вид эффекта, но все же так же круто.
Подсказка: Будет трясти камеру до тех пор, пока не вызовут функции 'Камера - Сбросить Игровую Камеру' или 'Камера - Прекратить Тряску/Поворот Камеры
Мнение: эта штука напоминает так будто тебя в море лодку раскачивает
native CameraSetTargetNoise takes real mag, real velocity returns nothing
Трясти камеру
Трясти камеру для ", Player," с увеличением ", Magnitude
Трясти камеру - вызовет эффект тряски при землетрясении или обвале шахты, сильно трясется. Blizzard делает хорошие вычисления. Это просто продолжительный эффект раскачивания. По сути, он умножит входную величину на 2, а для скорости он умножит величину * 10 ^ Рихтера. Если входная величина больше 5, то значение Рихтера будет 5. Если оно равно 2-5, тогда оно будет установлено на это значение, а если оно меньше 2, оно будет установлено на 2. Так что вы вводите величина 10, это будет 10 * 10 ^ 5 для скорости, или 1 000 000. Это приводит к очень высоким частотам изменения, напоминающим эффект «грохота». Отличная функция для "мощных" способностей и боевой кинематографии.
Подсказка: Будет трясти камеру до тех пор, пока не вызовут функции 'Камера - Сбросить
Игровую Камеру' или 'Камера - Прекратить Тряску/Поворот Камеры
function CameraSetEQNoiseForPlayer takes player whichPlayer, real magnitude returns nothing
    local real richter = magnitude
    if (richter > 5.0) then
        set richter = 5.0
    endif
    if (richter < 2.0) then
        set richter = 2.0
    endif
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call CameraSetTargetNoiseEx(magnitude*2.0, magnitude*Pow(10,richter),true)
        call CameraSetSourceNoiseEx(magnitude*2.0, magnitude*Pow(10,richter),true)
    endif
endfunction
Прекратить Тряску/Поворот Камеры
Прекратить Тряску/Поворот камеры для ", Player
Это прекращает действие 'Вращать Цель Камеры' или 'Трясти Камеру. Короче по факту обнуляет значения.
function CameraClearNoiseForPlayer takes player whichPlayer returns nothing
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call CameraSetSourceNoise(0, 0)
        call CameraSetTargetNoise(0, 0)
    endif
endfunction
Установить границы камеры
Чтобы вернуть назад:
call ResetToGameCameraForPlayer( Player(0), 0 )
call SetCameraBoundsToRectForPlayerBJ( Player(0), GetCameraBoundsMapRect() )
native SetCameraBounds takes real x1, real y1, real x2, real y2, real x3, real y3, real x4, real y4 returns nothing
за границы камеры берут границы rect
function SetCameraBoundsToRect takes rect r returns nothing
    local real minX = GetRectMinX(r)
    local real minY = GetRectMinY(r)
    local real maxX = GetRectMaxX(r)
    local real maxY = GetRectMaxY(r)
    call SetCameraBounds(minX, minY, minX, maxY, maxX, maxY, maxX, minY)
endfunction
Установить точку пробела - это позволит вам нажать клавишу пробела, чтобы привязать камеру к определенной точке.
Установить точку пробела для ", Player," в ", Point
Точка пробела - это место, в которое перемещается камера, когда игрок нажимает пробел.
Вывод: Пробел не только привязан к точке этой функции. У игрока может быть несколько точек. Пробел изначально возвращает в стартовую позицию, а потом к последнему звуковому сообщению интерфейса, например, здание построено, герой погиб, рудник истощён, юнит атакован. Повторное нажатие на пробел возвращает предыдущую позицию. Последовательность точек, чем позже событие, тем первее точка. Это сделано специально, чтобы сместить камеру к последнему событию, и посмотреть что происходить. Как очистить точки - неизвестно. Можно овер дохера точек наплодить, чтобы игрок не смог вернуться к предыдущей точке
native SetCameraQuickPosition takes real x, real y returns nothing
Принятый ответ
2
1
5 лет назад
Отредактирован dsgsdgdsgsdg
2
Всё равно не работает, бесполезные мусорные функции, поставил я CameraSetupApplyForceDuration(gg_cam_Cam1Mid, true, 0); в код и ничего не работает, оно должно мне на камеру навести вид, а оно этого не делает
Господи я не хочу вставлять себе какие-то сложные CinematicSystems, я не хочу вникать в глубокий смысл создания качественных роликов, кто нибудь может просто привести пример кода как включить для всех синематик мод без прерывания эскейпом и навести на камеру созданную в редакторе? Думаете у меня есть время и желание читать вникать в тонкости создания роликов? Это бесполезный мусор, а не гайд забитый лишним я бы сказал чем.
Автор просто молодец и умница, долгих лет ему жизни, чтоб он был жив и здоров. Спасибо за теорию как создавать камеру на джассе и как её крутить в редакторе, я бы без этого гайда никогда бы в этом не разобрался. Но пример кода как посмотреть через эту камеру в игре в синематик моде конечно же никто не предоставил, всё это бесполезный мусор, а как сделать самое основное никто нигде нормально не объясняет, это единственная тема ради которой я тут и зарегался, потому что ничего сложнее тупее и запутаннее я еще не встречал, мало того там еще и ГУИ в конце, 10 из 10
Мне нужен просто рабочий код в пару строчек который всего навсего включает режим ролика и наводит камеру, дальше сам разберусь
Я вставляю функцию, она не ра бо та ет, мне нужно чтобы работала. Мой код указанный выше не работает. Почему?
5
23
5 лет назад
5
потому что ты ничего не зочеш делать о боже. Ник ясно за себя говорит. как и твои сказочки.
0
1
5 лет назад
0
pro100master:
потому что ты ничего не зочеш делать о боже. Ник ясно за себя говорит. как и твои сказочки.
Потому что никто не хочет нормально ответить на ворпос, о да боже как это сложно дать парню ответ в виде того какие функции в начале в каком порядке вызвать чтобы навёлся вид на камеру вау это так сложно, давайте я лучше понты покидаю и кину ссылку на гайд в КОТОРОМ НИЧЕГО НЕТ
Я с этим возился целые сутки и так, видимо ЧСВ не позволяет дать сразу ответ на вопрос? Я спросил где мне научиться всему о синематиках или я спросил как камеру навести на нужное мне место?
5
27
5 лет назад
Отредактирован MpW
5
dsgsdgdsgsdg, не все функции могут работать. признаюсь что CameraSetupApplyForceDuration не работает при time = 0.00 sec. вот при time>0 работает. для начала ты должен разобраться сам что у тебя не работает/работает. ты же не можешь работать с тем что не понимаешь. надо разобраться. пробуй тогда другую нативку
native PanCameraToTimed takes real x, real y, real duration returns nothing
ты же не безмозглый, есть другие похожие функции. Эта точно должна сработать, берешь координаты камеры и через GetLocalPlayer

в ссылке которую я скинул был примеры с синематиками (там у автора несколько ссылок). вот одна из них. вот вторая. хотел примеры, вот. значит плохо хотел. кто хочет всегда найдет.
4
28
5 лет назад
4
какие функции в начале в каком порядке вызвать чтобы навёлся вид на камеру вау это так сложно
Открываем карты кампании, некоторых карт от близзард и смотрим, как сделано. В этом комментарии тебе кинули описание почти всех функций для камеры. Не говоря уже о том, что описание к функциям можно глянуть в ГУИ.
7
26
5 лет назад
7
У спеца по мемхаку код - конвертированный GUI)))
Чтобы оставить комментарий, пожалуйста, войдите на сайт.