カーソルでキャラクタを掴み、カーソルが指定したところまでキャラクタを移動させることが出来たのですが
マップのマス目に沿ってカクカクと移動させる処理が思いつきません。どのように実装しているのでしょうか・・・?
XとYを同時に処理しているせいかナナメ移動してしまいます。
ご教授お願いいたします
現在のコード
int Charcter::MoveChar(Cursor *Cur){
//カーソル移動入力
if(Cur->nPos_x % 32 == 0 && Cur->nPos_y %32 == 0){
if(Key[KEY_INPUT_Z] != 0 ){//キャラピックアップ入力
if(Cur->nPos_x == nPos_x && Cur->nPos_y == nPos_y){
Cur->GetCharNumber = cd.CharNumber;//カーソルにキャラクタ番号を代入
}
}
}
int temp;
if(Cur->nPos_x % 32 == 0 && Cur->nPos_y %32 == 0){
if(Key[KEY_INPUT_X] != 0 ){//キャラクタ移動処理
if(Cur->GetCharNumber != 0){//カーソルが何かをつかんでいれば
MoveFlag = true;//キャラクタ移動フラグを立てる
Cur->MoveFlag = false;//カーソルを動かさないフラグを立てる
}
}
}
if(MoveFlag == true){
if(Cur->GetCharNumber != 0){
//カーソルの位置から移動量がプラスかマイナスかの計算
temp = nPos_x - Cur->nPos_x;
if(temp < 0){
if(nPos_x != Cur->nPos_x){
nPos_x += 2;//キャラ移動
}
}else{
if(nPos_x != Cur->nPos_x)nPos_x -= 2;
}
//移動量がプラスかマイナスかの計算
temp = nPos_y - Cur->nPos_y;
if(temp < 0){
if(nPos_y != Cur->nPos_y){
nPos_y += 2;//キャラ移動
}
}else{
if(nPos_y != Cur->nPos_y)nPos_y -= 2;
}
if(nPos_y == Cur->nPos_y && nPos_x == Cur->nPos_x){//フラグの解除とつかんでいるキャラを離す
MoveFlag = false;
Cur->MoveFlag = true;
Cur->GetCharNumber = 0;
}
}
}
return 0;
}