Камера. Что это такое? Камера - это устройство позволяющее записывать видео. В WE камера выполняет огромную роль в создании роликов или же просто допустим прикреплении к юниту или какому либо месту. Да, действительно камера в игре похожа на настоящую камеру, и если быть мастером камер, можно "организовать" съемку хорошего видео. Прежде всего, камеры бывают встроенные, и те которые можно создавать. Под встроенными я понимаю такие камеры как - Lock Camera to unit. В данном случае камера не требуется, она просто закрепляется за юнитом. А чтобы действительно использовать например функцию Apply camera Object нам потребуется камера, заранее созданная нами и отредактированная (высота, угол, подъем и прочее). Для того чтобы сделать мало мальский ролик мы должны овладеть функцией камер. Рассмотрим функцию, где я буду описывать каждое действие камеры. В роликах используются в основном функции камер а также действия фильтров. О них попозже.
1. Apply Camera Object - показывает камеру (для этого необходима заранее созданная камера, в меню камер). Причем можно установить кол-во секунд для плавного перехода камеры в указанное место. 2. Pan Camera (Timed) - применяет камеру какого-либо игрока в определенную точку. (Встроенная камера, не требует заранее созданной камеры) 3. Pan Camera With Interpolated Height - применяет камеру на определенной высоте от ландшафта к определенной точке. Встроенная. 4. Pan Camera As Nessesary - так же как и в Pan camera (2). 5. Set Camera Field - очень интересная функция. Позволяет отдалять камеру на расстояние. Изменять угол и прочие хитрости. 6. Rotare Camera Around Point - поворачивает камеру, с определенным углом от какой либо точки. 7. Lock Camera Target to Unit - закрепить камеру за юнитом. Можно отцепить нажатием ctrl + c. Так что, чтобы игроки не отцепили, можно применять эту камеру 20 раз за секунду. 8. Stop Camera - остановить текущую камеру. 9. Reset Game camera - обычно используется в роликах, для того, что бы отдать управление игроку и возвращению камеры в исходное положение. 10. Change camera smoothing factor - Изменить плавность камеры. Поставьте 150 и подергайте камеру), есть разница?) 11. Shake camera - Потрясти камеру. Чем больше магнитуда, тем сильнее трясется камера. 12. Stop shaking camera. Остановить тряску камеры. Некоторые функции были выпущены поскольку они либо не используются, либо никогда не использовались автором.
Из всех вышеперечисленных функции я думаю нам вообще в картостроении будут нужны только основные: применить камеру, закрепить за юнитом, потрясти, изменить плавность.
Далее перечислю функции Cinematic: 1.Transmission from unit - Сделать на экране лицо говорящего игрока, и отобразить на экране текстом что он как бы говорит. Можно задать произведение звука, как живую речь. 2.Cinematic Mode - Включить синематический режим. В этом режиме игроки не могу управлять, они должы смотреть ролик=) 3. Fade Filter - чуть ли не основная функция при делании роликов. Делает затемнение, и прочие вещи. 4. Ping Minimap - сделать пинг на карте, аналогично пингу в игре, игроками. Но несколько другое отображение пинга.
Это основные функции для работы с камерами. А теперь мы можем их использовать. Что я зря писал название этих функции? Сейчас будет примерчик=). В завершение я привел пример применения 3D камеры на юните.
Это основные функции для работы с камерами. А теперь мы можем их использовать. Что я зря писал название этих функции? Сейчас будет примерчик=). В завершение я привел пример применения 3D камеры на юните
function CameraSetupApplyForPlayer takes boolean doPan, camerasetup whichSetup, player whichPlayer, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call CameraSetupApplyForceDuration(whichSetup, doPan, duration) endif endfunction
Функция:
Code
call PanCameraToTimedLocForPlayer
Подробнее:
Code
function PanCameraToTimedLocForPlayer takes player whichPlayer, location loc, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), duration) endif endfunction
Функция:
Code
call PanCameraToTimedLocWithZForPlayer
Подробнее:
Code
function PanCameraToTimedLocWithZForPlayer takes player whichPlayer, location loc, real zOffset, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PanCameraToTimedWithZ(GetLocationX(loc), GetLocationY(loc), zOffset, duration) endif endfunction
Функция:
Code
call SmartCameraPanBJ
Подробнее:
Code
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
Функция:
Code
call SetCameraFieldForPlayer
Подробнее:
Code
function SetCameraFieldForPlayer takes player whichPlayer, camerafield whichField, real value, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraField(whichField, value, duration) endif endfunction
Функция:
Code
call RotateCameraAroundLocBJ
Подробнее:
Code
function RotateCameraAroundLocBJ takes real degrees, location loc, player whichPlayer, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraRotateMode(GetLocationX(loc), GetLocationY(loc), bj_DEGTORAD * degrees, duration) endif endfunction
Функция:
Code
call SetCameraTargetControllerNoZForPlayer
Подробнее:
Code
function SetCameraTargetControllerNoZForPlayer takes player whichPlayer, unit whichUnit, real xoffset, real yoffset, boolean inheritOrientation returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraTargetController(whichUnit, xoffset, yoffset, inheritOrientation) endif endfunction
Функция:
Code
call StopCameraForPlayerBJ
Подробнее:
Code
function StopCameraForPlayerBJ takes player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call StopCamera() endif endfunction
Функция:
Code
call ResetToGameCameraForPlayer
Подробнее:
Code
function ResetToGameCameraForPlayer takes player whichPlayer, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ResetToGameCamera(duration) endif endfunction
Функция:
Code
call ResetToGameCameraForPlayer
Подробнее:
Code
function ResetToGameCameraForPlayer takes player whichPlayer, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ResetToGameCamera(duration) endif endfunction
Функция:
Code
call CameraSetSmoothingFactorBJ
Подробнее:
Code
function CameraSetSmoothingFactorBJ takes real factor returns nothing call CameraSetSmoothingFactor(factor) endfunction
Эта функция совешенно бессмысленна потому-что вызывает свой аналог - native:
Code
native CameraSetSmoothingFactor takes real factor returns nothing
Функция:
Code
call CameraSetEQNoiseForPlayer
Подробнее:
Code
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
Функция:
Code
call CameraClearNoiseForPlayer
Подробнее:
Code
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
Синематика
Функция:
Code
call TransmissionFromUnitWithNameBJ
Подробнее:
Code
function TransmissionFromUnitWithNameBJ takes force toForce, unit whichUnit, string unitName, sound soundHandle, string message, integer timeType, real timeVal, boolean wait returns nothing call TryInitCinematicBehaviorBJ()
// Ensure that the time value is non-negative. set timeVal = RMaxBJ(timeVal, 0)
set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal) set bj_lastPlayedSound = soundHandle
if (IsPlayerInForce(GetLocalPlayer(), toForce)) then // Use only local code (no net traffic) within this block to avoid desyncs.
if (whichUnit == null) then // If the unit reference is invalid, send the transmission from the center of the map with no portrait. call DoTransmissionBasicsXYBJ(0, PLAYER_COLOR_RED, 0, 0, soundHandle, unitName, message, bj_lastTransmissionDuration) else call DoTransmissionBasicsXYBJ(GetUnitTypeId(whichUnit), GetPlayerColor(GetOwningPlayer(whichUnit)), GetUnitX(whichUnit), GetUnitY(whichUnit), soundHandle, unitName, message, bj_lastTransmissionDuration) if (not IsUnitHidden(whichUnit)) then call UnitAddIndicator(whichUnit, bj_TRANSMISSION_IND_RED, bj_TRANSMISSION_IND_BLUE, bj_TRANSMISSION_IND_GREEN, bj_TRANSMISSION_IND_ALPHA) endif endif endif
if wait and (bj_lastTransmissionDuration > 0) then // call TriggerSleepAction(bj_lastTransmissionDuration) call WaitTransmissionDuration(soundHandle, timeType, timeVal) endif
endfunction
Функция:
Code
call TransmissionFromUnitWithNameBJ
Подробнее:
Code
function CinematicModeBJ takes boolean cineMode, force forForce returns nothing call CinematicModeExBJ(cineMode, forForce, bj_CINEMODE_INTERFACEFADE) endfunction
Функция:
Code
call CinematicFadeBJ
Подробнее:
Code
function CinematicFadeBJ takes integer fadetype, real duration, string tex, real red, real green, real blue, real trans returns nothing if (fadetype == bj_CINEFADETYPE_FADEOUT) then // Fade out to the requested color. call AbortCinematicFadeBJ() call CinematicFadeCommonBJ(red, green, blue, duration, tex, 100, trans) elseif (fadetype == bj_CINEFADETYPE_FADEIN) then // Fade in from the requested color. call AbortCinematicFadeBJ() call CinematicFadeCommonBJ(red, green, blue, duration, tex, trans, 100) call FinishCinematicFadeAfterBJ(duration) elseif (fadetype == bj_CINEFADETYPE_FADEOUTIN) then // Fade out to the requested color, and then fade back in from it. if (duration > 0) then call AbortCinematicFadeBJ() call CinematicFadeCommonBJ(red, green, blue, duration * 0.5, tex, 100, trans) call ContinueCinematicFadeAfterBJ(duration * 0.5, red, green, blue, trans, tex) call FinishCinematicFadeAfterBJ(duration) endif else // Unrecognized fadetype - ignore the request. endif endfunction
Функция:
Code
call PingMinimapLocForForce
Подробнее:
Code
function PingMinimapLocForForce takes force whichForce, location loc, real duration returns nothing call PingMinimapForForce(whichForce, GetLocationX(loc), GetLocationY(loc), duration) endfunction
Code
function PingMinimapForForce takes force whichForce, real x, real y, real duration returns nothing if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call PingMinimap(x, y, duration) //call StartSound(bj_pingMinimapSound) endif endfunction