Я думаю,что объяснять вам,что такое камера,я не буду.
К глубочайшему сожалению сделать что-то толковое и красивое невозможно,потому-что все ролики
в игре создаются не только скриптингом,но и всякими анимациями,сделанными в продвинутых
графических редакторах.
Вот список команд,которые использубтся во всех роликах игры:
Camera.SetPosition(664.9,-479.6, 16.1,0.0,0.0,0.0) - эта команда помещает камеру в заданную
точку карты
664.9 - координата по оси X
-479.6 - координата по оси Y
16.1 - координата по оси Z
0.0, 0.0, 0.0 - углы наклона камеры по координатным осям
Camera.PointAt(665.8948, -479.5685, 16.4175, 2) - эта команда заставляет камеру посмотреть
в заданную точку карты
665.8948 - координата по оси X
-479.5685 - координата по оси Y
16.4175 - координата по оси Z
2 - тип перемещения камеры.
Всего есть два типа:
1 - допустим мы поставили камеру,направили её в какую-то точку,и теперь,если мы меняем точ-
ку,в которую смотрит камера,то действие перемены положения точки и камеры происходит
плавно,т.е. не мгновенный переход.Посмотрите пимер и всё поймёте.
2 - тоже самое,что и первое,но камера перемещается мгновенно
Чтобы изменить скорость полёта и поворота камеры используем вот это:
0460: set_camera_pointing_time 0.0 3000
0.0 - не трогайте,этот параметр всегда такой
3000 - время перемещения камеры
Эта команда действует только тогда,когда последний параметр команды Camera.PointAt равен 1
Также можно сделать так,чтобы камера смотрела на актёра,но сначало камеру надо поставить:
Camera.OnPed($PLAYER_ACTOR, 15, 2)
$PLAYER_ACTOR - актёр,на которого смотрит камера
15 - не знаю
2 - тип перемещения камеры,типы описаны выше
Чтобы камера смотрела на машину используем вот это:
Camera.OnVehicle($Car, 15, 2)
$Car - имя машины,на которую смотрит камера
15 - не знаю
2 - тип перемещения камеры,типы описаны выше
Камеру также можно поместить на автомобиль:
0679: put_camera_on_vehicle $Car offset -5.0 -15.0 10.0 rotation 0.0 5.0 1.0 0.0 2
$Car - машина,на которую ставится камера
-5.0 -15.0 10.0 - координаты камеры относительно геом. центра машины
0.0 5.0 1.0 - координаты относительно геом. центра машины,в которые смотрит камера
0.0 - угол наклона камеры
2 - тип перемещения камеры
Можно поставить камеру на автомобиль и заставить камеру смотреть на актёра:
067B: put_camera_on_car $Car offset -1.5 1.5 1.5 point_to_actor $Actor tilt 6.0 2
$Car - машина,на которую ставится камера
-1.5 1.5 1.5 - положение камеры,относительно геометрического места машины
$Actor - имя актёра,на которого будет смотреть камера
6.0 - угол наклона камеры
2 - тип перемещения камеры
Можно поставить камеру на автомобиль и заставить её смотреть на другой автомобиль:
067A: put_camera_on_car $Car_1 offset 0.0 0.0 3.0 point_to_car $Car_2 tilt 0.0 2
$Car_1 - машина,на которую ставится камера
-1.5 1.5 1.5 - положение камеры,относительно геометрического места машины
$Car_2 - имя машины,на которую будет смотреть камера
6.0 - угол наклона камеры
2 - тип перемещения камеры
Есть интересная команда,которая помещает камеру в определённую точку,и в этой точке камеру
можно вращать мышкой,вот эта команда:
0930: (unknown) 1
Но она только поместит камеру в точку 0.0 0.0 0.0 , её там можно будет вращать.
Но чтобы поместить камеру в др. точку,то после той команды пишем эту:
0936: set_camera 146.0 1558.4 104.4 position_to 146.0 1558.4 104.4 10 ms 1
146.0 1558.4 104.4 - вот координаты точки,незабудьте,что они повторяются в конце команды.
То есть полная конструкция кода помещения камеры в данную точку выглядит вот так:
0930: (unknown) 1
0936: set_camera 146.0 1558.4 104.4 position_to 146.0 1558.4 104.4 10 ms 1
Чтобы установить камеру позади игрока используем эту команду:
Camera.SetBehindPlayer
Можно сделать так,чтобы камера тряслась:
camera.Shake(400)
400 - если значение небольшое,типа этого,то камера несильно трясётся и небольшое время,как
ставишь,например,2000,то начинается дикая тряска,которая вообще не прекращается
Чтобы вернуть камеру в ёё исходное положение,т.е. к игроку используется вот эта команда:
Camera.Restore_WithJumpCut
Видео эффектов немного:
1)02A3: toggle_widescreen 1 - включает широкий экран(исчезают радар,жизни... и появляются две
чёрные линии внизу и вверху экрана)
02A3: toggle_widescreen 0 - выключает широкий экран
2)fade 0 1500 - это затемнение экрана,наверное видили при начале миссии,как только на маркер
заходишь
0 - показывает,что это затемнение,если поставить 1,то это будет просветление
1500 - время в миллисекундах,которой будет происходить затемнение(просветление)
3)0169: set_fade_color 0 0 0 - устанавливает цвет затемнения
4)0581: toggle_radar 0 - убирает с экрана радар
5)0826: toggle_hud 0 - убирает с экрана звёздочки,иконку оружия,жизни,короче всё,кроме радара
Ещё есть полезная команда,которая очищает местность от актёров и машин:
0395: clear_area 1 at 681.8004 -474.1063 15.5363 range 3.0
681.8004 -474.1063 15.5363 - координаты очищения
3.0 - радиус очищения
Не менее полезная команда,которая освежает местность по заданным координатам(X,Y),она приме-
няется когда,мы помещаем камеру в точку,далёкую от игрока,или когда помещаем игрока на боль-
шое расстояние,просто текстуры там не успевают прорисоваться,а эта команда их прорисовывает:
04E4: unknown_refresh_game_renderer_at 2488.5623 -1876.8645
Пример:
create_thread @VideoTest // создаём поток,как это делать писалось в первой главе
:VideoTest // начинаем поток
wait 7000 // ждём 7 сек
fade 0 1500 // затемнение
wait 2000 // ждём 2 сек
fade 1 1500 // просветление
wait 1500 // ждём 1.5 сек
camera.SetPosition(2490.7458,-1677.2081,27.4875 ,0.0,0.0,0.0 ) // уставливаем камеру
camera.PointAt(2500.9705,-1689.441,13.5505,2) // направляем на дом Карла
wait 5000 // ждём 5 сек
camera.PointAt(2487.7231,-1652.1099,13.5006,1) // камера плавно направ. к дому OG
0460: set_camera_pointing_time 0.0 3000 // устанавливаем время перемещения
wait 6000 // ждём 6 сек
camera.SetPosition(2542.6858,-1673.5902,43.5122,0.0,0.0,0.0) // уст. нов. позицию камеры
camera.PointAt(2464.5034,-1668.6432,13.4745,1) // уст. нов. точку,на которую смотрит к-ра
0460: set_camera_pointing_time 0.0 3000 // устанавливаем время перемещения
wait 8000 // ждём 8 сек
camera.Restore_WithJumpCut // возвращаем камеру в нормальное состояние
end_thread // заканчиваем поток
Если что непонятно,то на вопросы на форум.