「DXライブラリ」斜め移動も上下移動と同じ速度にしたい。
ピタゴラスの定理の関係で斜めに移動したときに多く移動してしうのでそれを上下に移動したときと同じ移動量の[5]にしたいです、上下左右[5]ですので斜め移動したときの移動量も[5]にしたのですがどうすればいいのでしょうか、数学の知識がないため実装に困ってす。参考書でなんとなく理解したのですがプログラムを組み方?を教えてほしいです。
数学が苦手なため詳細にお願いしたいです。
#include "DxLib.h"
int Key[256];
int gpUpdateKey() {
char tmpKey[256];
GetHitKeyStateAll(tmpKey);
for (int i = 0; i < 256; i++) {
if (tmpKey[i] != 0) {
Key[i]++;
}
else {
Key[i] = 0;
}
}
return 0;
}
// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);//画面モード
int x = 320; int y = 240;
int Handle = LoadGraph("mario.png");
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && gpUpdateKey() == 0)
{
if (Key[KEY_INPUT_RIGHT] >= 1) {
x+=5.0;
}
if (Key[KEY_INPUT_LEFT] >= 1) {
x-=5.0;
}
if (Key[KEY_INPUT_UP] >= 1) {
y-=5.0;
}
if (Key[KEY_INPUT_DOWN] >= 1) {
y+=5.0;
}
DrawRotaGraph(x,y,1.0,0.0,Handle,TRUE);
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}