- Joined
- Mar 28, 2016

- Messages
- 1,623

- Reaction score
- 1,431

- First Language
- French

- Primarily Uses
- RMMV

these basics codes allows you to manage mathematical basis movements in your game. Most essential and basic.

**Distance Check**

This one is obviously very important in any sort of game development. What I find myself using it for most is quick collision checks. However its used in many cases, an example found later in this article.

PHP:

```
var x = x2 - x1,
y = y2 - y1,
distance = Math.sqrt(x*x + y*y);
```

**Move Towards an Object With Easing**

This can be useful for inertia based mouse movement. This moves an object to the designated target, making it move slower the closer it gets to the target.

PHP:

```
x += (targetX-x)/speed;
y += (targetY-y)/speed;
```

**Move Towards an Object at a Constant Speed**

The next bit of code can be used for any type of following behavior. The difference from the example above is that the object will move towards its target at a constant speed rather than easing its way there.

PHP:

```
var tx = targetX - x,
ty = targetY - y,
dist = Math.sqrt(tx*tx+ty*ty);
velX = (tx/dist)*thrust;
velY = (ty/dist)*thrust;
```

**Get the Angle Between Objects and Project a Point in Front of the Object**

Its important to note the above example does not include the facing direction in order to get that we need to know what the angle is between both objects.

PHP:

```
var x = this.x - this.targetX,
y = this.y - this.targetY,
radians = Math.atan2(y,x);
```

PHP:

```
pointx = x + pointLength * Math.cos(radians);
pointy = y + pointLength * Math.sin(radians);
```

**Move Towards Another Object With Proper Rotation**

We can combine the two above samples and now move an object towards another with the correct facing angle. This is obviously beneficial for many reasons.

http://jsfiddle.net/loktar/R6RMp/?utm_source=website&utm_medium=embed&utm_campaign=R6RMp

**Move an Object Based on its Heading**

The last movement example is moving based on the current heading. Meaning moving towards the angle you are facing. The angle can be a target angle, or one set by the user via the arrow keys for example. This is achieved by using the following

PHP:

```
velX = Math.cos(currentAngle) * thrust;
velY = Math.sin(currentAngle) * thrust;
```

PHP:

```
velX += Math.cos(currentAngle) * thrust;
velY += Math.sin(currentAngle) * thrust;
```

PHP:

```
velX *= 0.98;
velY *= 0.98;
```

Regardless of the type of motion you choose you then apply the velocities to your object.

PHP:

```
this.x -= this.velX;
this.y -= this.velY;
```

http://jsfiddle.net/loktar/3M6Fa/?utm_source=website&utm_medium=embed&utm_campaign=3M6Fa

source more info:

http://www.somethinghitme.com