# Moving units by vectors

#### wraithseeker

##### Tired.
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?
JASS:
``````// 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``````

JASS:
``````// speed vector

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

JASS:
``````//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.

#### phyrex1an

##### 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.

#### wraithseeker

##### Tired.
EDIT: Typically the movement would end when |V|<=0 ("length of V is less than 0")

Doesn't work.

#### wraithseeker

##### Tired.
JASS:
``````  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.target,d.position.x)
call SetUnitY(d.target,d.position.y)
call SetUnitFlyHeight(d.target,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.

#### phyrex1an

##### Staff Member and irregular helper
Staff member
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).

#### wraithseeker

##### Tired.
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.

#### uberfoop

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:
xD
• 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:
what development framework have you been looking at for mobile development?
• 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
• 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:
basically it is linux
• The Helper:
OMG it is BanLord as Blackveiled on the forum
• The Helper:
what is up buddy
• 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:
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:
Most people fail at life throughout their adulthood. Sometimes we get to learn from it. Usually it just feels like crap.
• The Helper:
What does not kill you makes you stronger is what they say