Moving units by vectors

So I have vector a which is x y z of initial unit position available and vector b x y z of final unit position available, how do I move them?
// initial vector
set d.zx = GetUnitX(target) * Cos(angle)
        set d.zy = GetUnitY(target) * Sin(angle)
        call MoveLocation(L,d.x,d.y)
        set d.zz = GetLocationZ(L) // I am not using Z axis for now, ignore it same for the rest

// speed vector

 set d.x = speed * Cos(angle) * TIME
        set d.y = speed * Sin(angle) * TIME
        set d.z = 0 * TIME

//decrement vector

  set d.dx = decrement * Cos(angle) * TIME
        set d.dy = decrement * Sin(angle) * TIME
        set d.z = 0 * TIME

I am new to vectors so don't blame me for doing stupid stuff, this is deacclerating and not accelerating. They start from a variable of x speed and then x decrement and end at 0 speed.


Staff Member and irregular helper
Staff member
Current position: P
Speed: V
Acceleration (use negative signs for deacceleration...): A
V and A are already in the right unit of time (this is what you do when you have *TIME)

Each interval:
V = V+A ([de]accelerating)
P = P+V (updating unit position)

Typically the movement would end when |V|<=0 ("length of V is less than 0")
Adding two vectors together is the the same thing as adding their respective x, y and z values.
  call MoveLocation(L,x,y)
        set d.position = vector.create(x,y,GetUnitFlyHeight(target)-GetLocationZ(L))
        set d.velocity = vector.create(x-GetUnitX(source),y- GetUnitY(source),120) // what should I input for the z axis of velocity?
        call d.velocity.setLength(speed*TIME)
        set d.acceleration = vector.create(d.velocity.x*-1,d.velocity.y*-1,GRAVITY) // GRAVITY = -981
        call d.acceleration.setLength(decrement*TIME)

    // periodic function
        set d.velocity.x = d.velocity.x+d.acceleration.x
        set d.velocity.y = d.velocity.y + d.acceleration.y // I know I could have added them together but I am doing some testing
        set d.velocity.z = d.velocity.z + d.acceleration.z
        set d.position.x = d.position.x + d.velocity.x
        set d.position.y = d.position.y + d.velocity.y
        call MoveLocation(L,d.position.x,d.position.y)
        set d.position.z = d.position.z + d.velocity.z
        set Height = GetLocationZ(L)
        call SetUnitX(,d.position.x)
        call SetUnitY(,d.position.y)
        call SetUnitFlyHeight(,d.position.z-Height,0)

The jump doesn't function correctly, it stops earlier then it should have been and it normally doesn't come down.


Staff Member and irregular helper
Staff member
Where is your stop condition?
Since this is a jump the movement should stop when d.position.z-Height <= 0. (set the fly height to 0 when this happens)
A jump won't have a x and y deacceleration, unless you account for air resistance which seems very unneeded for a wc3 spell. The only force is the gravity (z).
A stop condition is when the dot product of velocity and acceleration vector >= 0 then destroy the struct.

Well but that will screw up my distance as the distance gets longer for that condition. The x and y deacceleration is the knockback deacceleration.


~=Admiral Stukov=~
You said your jump only goes up and not down, and stops early. Are you using the dot product of velocity and accelleration >= 0 for the z of the jump to determine when to stop? Because that will stop it halfway through.
General chit-chat
Help Users
  • No one is chatting at the moment.
  • C Cherry.Grove:
    So what's the whole reforged situation? Do we have to run the classic version bootleg now?
  • C Cherry.Grove:
    My boyfriend is super into Bethesda modding so I'm probably going to join him in that for a bit, then move on to making mobile/browser games.
  • C Cherry.Grove:
    I mostly just want to look at my old projects because I know I posted uploads on here somewhere.
  • C Cherry.Grove:
    My one game was basically Among Us but you sabotaged an entire medieval city simulated drastically inefficiently with dynamic NPCs :S
  • C Cherry.Grove:
    of course I never finished it x D
  • jonas jonas:
  • jonas jonas:
    I think you can still run the original game, just there's a chance your map won't work with the newer patches
  • jonas jonas:
    what development framework have you been looking at for mobile development?
  • jonas jonas:
    I'm currently creating (as a hobby) a space invaders like game for mobile using Xamarin, after starting a few larger projects that I also may not have finished :rolleyes::p
  • The Helper The Helper:
    Awesome! you should look at the Atari VCS platform it does not have a huge user base but the one it has is super active at around 11k and they have no games in there store
  • The Helper The Helper:
    basically it is linux
  • The Helper The Helper:
    OMG it is BanLord as Blackveiled on the forum
  • The Helper The Helper:
    what is up buddy
  • jonas jonas:
    thanks for the tip, that sounds cool. Never heard about the VCS before but seems like it should be a good match
  • tom_mai78101 tom_mai78101:
    The winter vacation left a toll on me. I missed staying up late and sleeping in late.
  • C Cherry.Grove:
    i haven't looked into it yet
  • C Cherry.Grove:
    If I could use something Python compatible it would save me some learning
  • C Cherry.Grove:
    But Unity might be easiest
  • C Cherry.Grove:
    looking at old posts here makes me happy. Makes me be all like "wow I was pretty smart in 2009"
  • C Cherry.Grove:
    mostly failing at life through adulthood really demotivated me for a while
  • C Cherry.Grove:
    ....what I don't get is why the fuck they would force us to permanently convert to a version of the game everyone fucking hated : \
  • C Cherry.Grove:
    Raid Shadow Legends texture pack smh
  • jonas jonas:
    Most people fail at life throughout their adulthood. Sometimes we get to learn from it. Usually it just feels like crap.
  • The Helper The Helper:
    What does not kill you makes you stronger is what they say

    Members online


    Hive Workshop NUON Dome