What he's saying is that if you take an object moving at, say, 10 units per frame along either the x or y and switch it to move 10 units along a 45 degree diagonal you have to change the amount it's moved along the x and y axis by a factor of roughly .7071067. Otherwise it moves faster on the diagonal than it does on the axes. If you continued to move the object 10 upf on both x and y the diagonal speed would be sqrt (200) = 14.14 units per frame.

You should always break the x and y components of the velocity into separate values with x being

velocity * cos(angle)

and y being

velocity * sin(angle)

This likely will give you non-integer values so it's best to use floats for maintaining position and convert them to integer values when passing them to the positioning functions.

Lilith, Night Butterfly

I'm not a programmer but I play one in the office