let objPlayer = GetPlayerObjectID();//自機のオブジェクトID //本家東方のように同時押しすると左上の移動が優先されるようにする処理 let root2 = 2^0.5;//ルート2事前定義 let SlitSpeedX = 0;//同時押しの時の斜め移動速度補正X let SlitSpeedY = 0;//同時押しの時の斜め移動速度補正Y sub PlayerDualKeyMovePatch { let PlCliplist = GetPlayerClip;//移動範囲取得 let PlSpeedlist = GetPlayerSpeed;//移動速度取得 //同時押し中の設定(○左右 ×上下) ← if( (GetVirtualKeyState(VK_LEFT) == KEY_PUSH || GetVirtualKeyState(VK_LEFT) == KEY_HOLD)&& (GetVirtualKeyState(VK_RIGHT) == KEY_PUSH || GetVirtualKeyState(VK_RIGHT) == KEY_HOLD) ) { //同時押し中の設定(左上、右下) \ if( (GetVirtualKeyState(VK_UP) == KEY_PUSH || GetVirtualKeyState(VK_UP) == KEY_HOLD)|| (GetVirtualKeyState(VK_DOWN) == KEY_PUSH || GetVirtualKeyState(VK_DOWN) == KEY_HOLD) ) { SlitSpeedX = 1/root2; }else{ SlitSpeedX = 1; } if(GetVirtualKeyState(VK_SLOWMOVE) == KEY_PUSH || GetVirtualKeyState(VK_SLOWMOVE) == KEY_HOLD){ ObjMove_SetX(obj_Player,max(PlCliplist[0],GetPlayerX-PlSpeedlist[1]*SlitSpeedX)); }else{ ObjMove_SetX(obj_Player,max(PlCliplist[0],GetPlayerX-PlSpeedlist[0]*SlitSpeedX)); } } //同時押し中の設定(上下) ↑ if( (GetVirtualKeyState(VK_UP) == KEY_PUSH || GetVirtualKeyState(VK_UP) == KEY_HOLD)&& (GetVirtualKeyState(VK_DOWN) == KEY_PUSH || GetVirtualKeyState(VK_DOWN) == KEY_HOLD) ) { //同時押し中の設定(上下左右) \ if( (GetVirtualKeyState(VK_LEFT) == KEY_PUSH || GetVirtualKeyState(VK_LEFT) == KEY_HOLD)|| (GetVirtualKeyState(VK_RIGHT) == KEY_PUSH || GetVirtualKeyState(VK_RIGHT) == KEY_HOLD) ) { SlitSpeedY = 1/root2; }else{ SlitSpeedY = 1; } if(GetVirtualKeyState(VK_SLOWMOVE) == KEY_PUSH || GetVirtualKeyState(VK_SLOWMOVE) == KEY_HOLD){ ObjMove_SetY(obj_Player,max(PlCliplist[1],GetPlayerY-PlSpeedlist[1]*SlitSpeedY)); }else{ ObjMove_SetY(obj_Player,max(PlCliplist[1],GetPlayerY-PlSpeedlist[0]*SlitSpeedY)); } } }