gliding

ironfist19

New Member
Reaction score
3
hello, i have made gliding system...
JASS:
function Trig_Practice_05_Func002A takes nothing returns nothing
    local location gliderpos = GetUnitLoc(GetEnumUnit())
    local location glidez = PolarProjectionBJ(gliderpos, 10.00, GetUnitFacing(GetEnumUnit()))
    call SetUnitPositionLoc( GetEnumUnit(), glidez )
    call RemoveLocation (glidez)
    call RemoveLocation (gliderpos)
endfunction

function Trig_Practice_05_Actions takes nothing returns nothing
    set udg_temp_group = GetUnitsInRectAll(GetPlayableMapRect())
    call ForGroupBJ( udg_temp_group, function Trig_Practice_05_Func002A )
    call DestroyGroup(udg_temp_group)
endfunction

//---ironfist19
function InitTrig_Practice_05 takes nothing returns nothing
    set gg_trg_Practice_05 = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Practice_05, 0.05 )
    call TriggerAddAction( gg_trg_Practice_05, function Trig_Practice_05_Actions )
endfunction


does this looks ok? but i have a question... when the unit who is moving is hard to control.. i see the stop button is activated, letting him hard to control.. how do i set him to like : just stand and glide freely...
 

Nherwyziant

Be better than you were yesterday :D
Reaction score
96
NewGen will make your life easy so get it.

Use this code
JASS:
scope Sliding initializer I
    globals
        private constant real SPEED  = 300.0
        private constant real PERIOD = 0.03125
    endglobals
//Don't touch below
    globals
        private group SLIDER = CreateGroup()
    endglobals

    private function A2 takes nothing returns boolean
        local unit u = GetFilterUnit()
        local real x = GetUnitX(u)+(SPEED*PERIOD)*Cos(GetUnitFacing(u)*bj_DEGTORAD)
        local real y = GetUnitY(u)+(SPEED*PERIOD)*Sin(GetUnitFacing(u)*bj_DEGTORAD)

        call SetUnitPositionLoc(u,Location(x,y))
        //Why this?  Set x,y will make unit move faster and will go pass through unpathable, making slide faster.  no leaks here.
        set u = null
        return false
    endfunction

    private function A1 takes nothing returns nothing
        call GroupEnumUnitsInRect(SLIDER,GetWorldBounds(),Filter(function A2))
    endfunction

    private function C takes nothing returns boolean
        local unit u = GetTriggerUnit()
        local real x = GetUnitX(u)
        local real y = GetUnitY(u)

        call SetUnitX(u,x)
        call SetUnitY(u,y)
        call SetUnitFacing(u,bj_RADTODEG*Atan2(GetLocationY(GetOrderPointLoc())-y,GetLocationX(GetOrderPointLoc())-x))

        set u = null
        return false
    endfunction
    //===========================================================================
    private function I takes nothing returns nothing
        local trigger g = CreateTrigger()
        local integer i = 0

        call TriggerRegisterTimerEvent(g,PERIOD,true)
        call TriggerAddAction(g, function A1)

        set g = CreateTrigger()

        loop
            call TriggerRegisterPlayerUnitEvent(g,Player(i),EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER,null)
            set i = i+1
            exitwhen i == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(g,Filter(function C))
    endfunction
endscope


And instead of asking
does this looks ok?
Why don't just go here
 
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