Camera Help

ShadowSnipe4

New Member
Reaction score
4
I'm trying to get it so that the camera is put 32 units in front of "MoveUnit" and i have the camera script line that's giving me problems right here.
Code:
call SetCameraTargetControllerNoZForPlayer( Player (currentPlayer), udg_MoveUnit[currentPlayer + 1], 0, 0, true )
how would I get it so that it is just in front of the unit?
 

ShadowSnipe4

New Member
Reaction score
4
How would i incorporate that into the camera trigger though?
My problem was that it has only spots for the x and y axises no polar offset.
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,495
Hm... the simplest is probably to move a dummy unit at that spot and lock the camera on the dummy.


Other than that, well, there's some formulas:
x = distance * cosine(facing of unit)
y = distance * sine(facing of unit)

I have no idea though whether those produce the correct results in all 4 quadrants...
 

ShadowSnipe4

New Member
Reaction score
4
okay, I give up trying to do this on my own. Can anyone figure out why this isnt working? Its supposed to make the camera just in front of the unit at all times, but it doesnt work, it sometimes make the camera go underground, and sometimes over the walls, also with this on the hero wont move anymore, I think it has something to do with the actual camera dummy unit but its been giving me problems also.
Code:
function Trig_First_Person_View_Actions takes nothing returns nothing
    local integer currentPlayer = 0
    local unit currentUnit = null
    loop
        set currentUnit = udg_MoveUnit[currentPlayer + 1]
        if currentUnit != null then
        call SetCameraField(CAMERA_FIELD_ROTATION, GetUnitFacing(currentUnit), 0.20)
        call SetCameraField(CAMERA_FIELD_TARGET_DISTANCE, 100, 0.20)
        call SetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK, 3, 0.20)
        call SetCameraTargetControllerNoZForPlayer( Player (currentPlayer), udg_CameraUnit[currentPlayer + 1], 0, 0, false )
    endif
        set currentPlayer = currentPlayer + 1
        exitwhen currentPlayer > 9
    endloop
    set currentUnit = null
endfunction

//===========================================================================
function InitTrig_First_Person_View takes nothing returns nothing
    set gg_trg_First_Person_View = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_First_Person_View, 0.20 )
    call TriggerAddAction( gg_trg_First_Person_View, function Trig_First_Person_View_Actions )
endfunction

Code:
function Trig_First_Person_View_Target_Actions takes nothing returns nothing
    local integer currentPlayer = 0
    local unit currentUnit = null
    local location currentPosition = null
    local location positionToMoveTo = null
    local unit cameraUnit = null
    loop
        set currentUnit = udg_MoveUnit[currentPlayer + 1]
        set cameraUnit = udg_CameraUnit[currentPlayer + 1]
        if currentUnit != null then
        set currentPosition = GetUnitLoc(currentUnit)
        set positionToMoveTo = PolarProjectionBJ(currentPosition, 32, GetUnitFacing(currentUnit))
        endif
            call SetUnitPositionLocFacingBJ(udg_CameraUnit[currentPlayer + 1], positionToMoveTo, GetUnitFacing(currentUnit))
            call RemoveLocation(currentPosition)
            set currentPosition = null
            call RemoveLocation(positionToMoveTo)
            set positionToMoveTo = null
        set currentPlayer = currentPlayer + 1
        exitwhen currentPlayer > 9
    endloop
    set currentUnit = null
    set cameraUnit = null
endfunction

//===========================================================================
function InitTrig_First_Person_View_Target takes nothing returns nothing
    set gg_trg_First_Person_View_Target = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_First_Person_View_Target, 0.20 )
    call TriggerAddAction( gg_trg_First_Person_View_Target, function Trig_First_Person_View_Target_Actions )
endfunction




Also, heres the movement triggers if that helps.
Code:
function Trig_HeroMovement_Press takes nothing returns nothing
set udg_MoveActive[GetConvertedPlayerId(GetTriggerPlayer())] = true
endfunction

function Trig_HeroMovement_Release takes nothing returns nothing
set udg_MoveActive[GetConvertedPlayerId(GetTriggerPlayer())] = false
endfunction

function Trig_HeroMovement_Actions takes nothing returns nothing
    local integer currentPlayer = 0
    local unit currentUnit = null
    local location currentPosition = null
    local location positionToMoveTo = null
    local real offset = 0.0
    loop
        set currentUnit = udg_MoveUnit[currentPlayer + 1]
        if currentUnit != null and udg_MoveActive[currentPlayer + 1] then
        set currentPosition = GetUnitLoc(currentUnit)
        if udg_MoveActiveLeft[currentPlayer] then
        set offset = 20.0
        elseif udg_MoveActiveRight[currentPlayer] then
        set offset = -20.0
        endif
            set positionToMoveTo = PolarProjectionBJ(currentPosition, 128.0, GetUnitFacing(currentUnit) + offset)
            call RemoveLocation(currentPosition)
            set currentPosition = null
            set currentPosition = null
            call IssuePointOrderLoc(currentUnit, "move", positionToMoveTo)
            call RemoveLocation(positionToMoveTo)
            set positionToMoveTo = null
        endif
        set currentPlayer = currentPlayer + 1
        exitwhen currentPlayer > 9
        set offset = 0.0
    endloop
    set currentUnit = null
endfunction


//===========================================================================
function InitTrig_HeroMovement takes nothing returns nothing
    local trigger pressTrigger = CreateTrigger()
    local trigger releaseTrigger = CreateTrigger()
    set gg_trg_HeroMovement = CreateTrigger(  )
    call TriggerAddAction( gg_trg_HeroMovement, function Trig_HeroMovement_Actions )
    call TriggerAddAction( pressTrigger, function Trig_HeroMovement_Press )
    call TriggerAddAction( releaseTrigger, function Trig_HeroMovement_Release )
    call RegisterEventForAllPlayers(pressTrigger, EVENT_PLAYER_ARROW_UP_DOWN)
    call RegisterEventForAllPlayers(releaseTrigger, EVENT_PLAYER_ARROW_UP_UP)
    call TriggerRegisterTimerEventPeriodic(gg_trg_HeroMovement, 0.2)
endfunction

Code:
function Trig_HeroMovement_PressLeft takes nothing returns nothing
set udg_MoveActiveLeft[GetConvertedPlayerId(GetTriggerPlayer())] = true
endfunction

function Trig_HeroMovement_ReleaseLeft takes nothing returns nothing
set udg_MoveActiveLeft[GetConvertedPlayerId(GetTriggerPlayer())] = false
endfunction

function Trig_HeroMovementLeft_Actions takes nothing returns nothing
    local integer currentPlayer = 0
    local unit currentUnit = null
    loop
        set currentUnit = udg_MoveUnit[currentPlayer + 1]
        if currentUnit != null and udg_MoveActiveLeft[currentPlayer + 1] then
        call SetUnitFacing(currentUnit, GetUnitFacing(currentUnit) + 20.0)
        endif
        set currentPlayer = currentPlayer + 1
        exitwhen currentPlayer > 9
    endloop
    set currentUnit = null
endfunction


//===========================================================================
function InitTrig_HeroMovement_Turn_Left takes nothing returns nothing
    local trigger pressTrigger = CreateTrigger()
    local trigger releaseTrigger = CreateTrigger()
    set gg_trg_HeroMovement_Turn_Left = CreateTrigger(  )
    call TriggerAddAction( gg_trg_HeroMovement_Turn_Left, function Trig_HeroMovementLeft_Actions )
    call TriggerAddAction( pressTrigger, function Trig_HeroMovement_PressLeft )
    call TriggerAddAction( releaseTrigger, function Trig_HeroMovement_ReleaseLeft )
    call RegisterEventForAllPlayers(pressTrigger, EVENT_PLAYER_ARROW_LEFT_DOWN)
    call RegisterEventForAllPlayers(releaseTrigger, EVENT_PLAYER_ARROW_LEFT_UP)
    call TriggerRegisterTimerEventPeriodic(gg_trg_HeroMovement_Turn_Left, 0.2)
endfunction

Code:
function Trig_HeroMovement_PressRight takes nothing returns nothing
set udg_MoveActiveRight[GetConvertedPlayerId(GetTriggerPlayer())] = true
endfunction

function Trig_HeroMovement_ReleaseRight takes nothing returns nothing
set udg_MoveActiveRight[GetConvertedPlayerId(GetTriggerPlayer())] = false
endfunction

function Trig_HeroMovementRight_Actions takes nothing returns nothing
    local integer currentPlayer = 0
    local unit currentUnit = null
    loop
        set currentUnit = udg_MoveUnit[currentPlayer + 1]
        if currentUnit != null and udg_MoveActiveRight[currentPlayer + 1] then
        call SetUnitFacing(currentUnit, GetUnitFacing(currentUnit) - 20.0)
        endif
        set currentPlayer = currentPlayer + 1
        exitwhen currentPlayer > 9
    endloop
    set currentUnit = null
endfunction


//===========================================================================
function InitTrig_HeroMovement_Turn_Right takes nothing returns nothing
    local trigger pressTrigger = CreateTrigger()
    local trigger releaseTrigger = CreateTrigger()
    set gg_trg_HeroMovement_Turn_Right = CreateTrigger(  )
    call TriggerAddAction( gg_trg_HeroMovement_Turn_Right, function Trig_HeroMovementRight_Actions )
    call TriggerAddAction( pressTrigger, function Trig_HeroMovement_PressRight )
    call TriggerAddAction( releaseTrigger, function Trig_HeroMovement_ReleaseRight )
    call RegisterEventForAllPlayers(pressTrigger, EVENT_PLAYER_ARROW_RIGHT_DOWN)
    call RegisterEventForAllPlayers(releaseTrigger, EVENT_PLAYER_ARROW_RIGHT_UP)
    call TriggerRegisterTimerEventPeriodic(gg_trg_HeroMovement_Turn_Right, 0.2)
endfunction

Code:
function Trig_HeroMovement_Turn_Around_Actions takes nothing returns nothing
    local unit theUnit = udg_MoveUnit[GetConvertedPlayerId(GetTriggerPlayer())]
call SetUnitFacing( theUnit, GetUnitFacing(theUnit) + 180.0)
set theUnit = null 
endfunction


//===========================================================================
function InitTrig_HeroMovement_Turn_Around takes nothing returns nothing
    set gg_trg_HeroMovement_Turn_Around = CreateTrigger(  )
    call TriggerAddAction( gg_trg_HeroMovement_Turn_Around, function Trig_HeroMovement_Turn_Around_Actions )
    call RegisterEventForAllPlayers(gg_trg_HeroMovement_Turn_Around, EVENT_PLAYER_ARROW_DOWN_DOWN)
endfunction


Fogot to put the spawn trigger.
Code:
Get Marines
    Events
        Map initialization
    Conditions
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Player 1 (Red) slot status) Equal to Is playing
            Then - Actions
                Unit - Create 1 Camera Target for Player 11 (Dark Green) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set MoveUnit[1] = (Last created unit)
                Unit - Create 1 Crew Member (In Combat Armor) for Player 1 (Red) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set CameraUnit[1] = (Last created unit)
            Else - Actions
                Do nothing
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Player 2 (Blue) slot status) Equal to Is playing
            Then - Actions
                Unit - Create 1 Crew Member (In Combat Armor) for Player 2 (Blue) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set MoveUnit[2] = (Last created unit)
                Unit - Create 1 Camera Target for Player 11 (Dark Green) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set CameraUnit[2] = (Last created unit)
            Else - Actions
                Do nothing
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Player 3 (Teal) slot status) Equal to Is playing
            Then - Actions
                Unit - Create 1 Crew Member (In Combat Armor) for Player 3 (Teal) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set MoveUnit[3] = (Last created unit)
                Unit - Create 1 Camera Target for Player 11 (Dark Green) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set CameraUnit[3] = (Last created unit)
            Else - Actions
                Do nothing
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Player 4 (Purple) slot status) Equal to Is playing
            Then - Actions
                Unit - Create 1 Crew Member (In Combat Armor) for Player 4 (Purple) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set MoveUnit[4] = (Last created unit)
                Unit - Create 1 Camera Target for Player 11 (Dark Green) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set CameraUnit[4] = (Last created unit)
            Else - Actions
                Do nothing
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Player 5 (Yellow) slot status) Equal to Is playing
            Then - Actions
                Unit - Create 1 Crew Member (In Combat Armor) for Player 5 (Yellow) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set MoveUnit[5] = (Last created unit)
                Unit - Create 1 Camera Target for Player 11 (Dark Green) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set CameraUnit[5] = (Last created unit)
            Else - Actions
                Do nothing
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Player 6 (Orange) slot status) Equal to Is playing
            Then - Actions
                Unit - Create 1 Crew Member (In Combat Armor) for Player 6 (Orange) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set MoveUnit[6] = (Last created unit)
                Unit - Create 1 Camera Target for Player 11 (Dark Green) at (Random point in Start Marines <gen>) facing Default building facing degrees
                Set CameraUnit[6] = (Last created unit)
            Else - Actions
                Do nothing

The variables i have in gui are: CameraUnit-Unit Array[10]-none-, MoveActive-boolian array[10]-false-, MoveActiveLeft-boolian array[10]-false-, MoveActiveRight-boolian array[10]-false-, MoveUnit-unit array[10]-none-.

if someone actually reads all of that and has an answer, I would greatly appreciate it.

EDIT: Also, theres a problem with going foreward right and foreward left. Its under the "Hero Movement" part.
 
G

Ghoulfrenzy

Guest
My God...you expect someone to read ALL that? :p

-Ghoulfrenzy
 

ShadowSnipe4

New Member
Reaction score
4
I hope for someone to, I've been failing at getting this to work properly for days now. (the camera part at least)

You guys, thanks to whoever actually read all that but I GOT IT TO WORK!!! I cant believe that that entire time its because I set the unit for cameraUnit to the maring and the unit for moveUnit to the camera dummy...

Also, is there a way to set the camera Z offset? Its a little too close to the ground.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top