Подскажите, можно ли сделать изменяемую, например, по высоте, камеру, причём на локального игрока, и чтобы на каждого игрока, и чтобы при этом не было десинка? И есть ли вообще такие функции в jass?
Например, функция
native AdjustCameraField takes camerafield whichField, real offset, real duration returns nothing - она изменяет параметры игровой камеры у всех игроков сразу, или у конкретного игрока?

выставление каких-то параметров камеры не локально само по себе, то есть например, чтобы выставить высоту, тебе нужно обернуть функцию в условие GetLocalPlayer == Player( ... ), но можно брать координаты камеры, для каждого игрока будет своё значение, и десинха не будет если использовать эти координаты для камер или ещё каких-то проверок, вроде расстояния между точками
`
ОЖИДАНИЕ РЕКЛАМЫ...
28
выставление каких-то параметров камеры не локально само по себе, то есть например, чтобы выставить высоту, тебе нужно обернуть функцию в условие GetLocalPlayer == Player( ... ), но можно брать координаты камеры, для каждого игрока будет своё значение, и десинха не будет если использовать эти координаты для камер или ещё каких-то проверок, вроде расстояния между точками
Принятый ответ
28
вот, например, делал другому человеку динамичную камеру со сканированием самой высокой точки на местности
код
function Trig_df_Actions takes nothing returns nothing
    local real x = GetCameraTargetPositionX( )
    local real y = GetCameraTargetPositionY( )
    local location LFZ = Location( x, y )
    local real r = 512.00
    local real d = 128.00
    local real d1
    local real fly = GetLocationZ( LFZ )
    local real step = 32.00
    
    loop
        set d1 = r
        
        loop
            call MoveLocation( LFZ, x + d, y + d1 )
            
            if GetLocationZ( LFZ ) > fly then
                set fly = GetLocationZ( LFZ )
            endif
        
            exitwhen d1 <= -r
            set d1 = d1 - step
        endloop
        
        exitwhen d <= -128.00
        set d = d - step
    endloop
    
    call DisplayTextToPlayer( GetLocalPlayer( ), 0.00, 0.00, R2S( fly ) )
    call SetCameraField( CAMERA_FIELD_TARGET_DISTANCE, 1350.00 + fly, 0.10 )
    
    call RemoveLocation( LFZ )
    set LFZ = null
endfunction

//===========================================================================
function InitTrig_df takes nothing returns nothing
    set gg_trg_df = CreateTrigger(  )
    call TriggerAddAction( gg_trg_df, function Trig_df_Actions )
    call TimerStart( CreateTimer( ), 0.10, true, function Trig_df_Actions )
endfunction
Загруженные файлы
23
rsfghd, Спасибо за информацию. Также я посмотрел, как камера реализована в древней карте Azeroth Grand Prix, там аналогично
28
EugeAl, я чушь если что написал про
rsfghd:
выставление каких-то параметров камеры не локально само по себе
без понятия чем я думал, вероятно из-за недосыпа, ведь потом я начал противоречить сам себе)
23
rsfghd, не локально, то есть у всех игроков камера поменяет параметры? Если не использовать Get local player?
28
EugeAl, камера локально работает ибо спокойно берет локальные значения и не десинхает, просто если ты хочешь, чтоб у конкретного что-то произошло, а у других нет, то нужно ещё дополнительно в GetLocalPlayer обвести
23
rsfghd, а, в этом смысле... Ок, теперь понятно
Чтобы оставить комментарий, пожалуйста, войдите на сайт.