水平や垂直の移動であれば、単純にX座標やY座標に移動量を足せばよい。
ところが、斜め移動でX座標とY座標に単純に移動量を足してしまうと、水平や垂直のときよりも多く移動してしまう。これを回避するためには、移動する方向と移動する量で考えればよい。移動する方向は角度で表して、そのときの水平と垂直の座標移動量はsin関数とcos関数で求める。
x += cos(角度) * 移動量 y += sin(角度) * 移動量
ちょっと本を読んでいたらこういうことが載っていた。当たり前っていえば当たり前。でもそれがすぐに出てこない自分はまだまだ未熟。