東方のシューティングゲームの様な、キャラを右に押したら右に移動しつつ、右に傾くことをしたいのです。
左キーを押したら、左に移動+左に傾く様な…。右左に傾く様にしたい、という事です。
すごく初歩的なことかもしれないのと、ちょっと分かり難いかと思いますがよろしくお願いします。
画像です↓
[0][1][2][3][4][5][6][7] その場で待機して服が風に揺れる列です。
[8][9][10][11][12][13][14][15] 左に傾く列です。
[16][17][18][19][20][21][22][23] 右に傾く列です。
コードです↓
#include "DxLib.h"
typedef struct{
int x,y,img,muki,walking_flag;
}ch_t;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
int image[24];
char Key[256]; //キーが押されているフレーム数を格納
ch_t ch;
if ( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
//ウィンドウ化と初期化処理
int flag = 0;
int w = 0;
int i = 0;
int z = 0;
ch.x =320;
ch.y =160;
ch.walking_flag=0;
ch.muki=3;
SetDrawScreen( DX_SCREEN_BACK );
LoadDivGraph("画像/自機素材 .png",24,8,3,32,47,image); //画像分割読み込み
//メッセージ処理 画面をクリア キーボード入力状態取得 ESCキーで終了
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
if(flag == 0){
ch.walking_flag=1; //歩くフラグ
if (Key[KEY_INPUT_UP] ==1)//上
ch.muki=0;
else if (Key[KEY_INPUT_LEFT]==1)//左
ch.muki=1;
else if (Key[KEY_INPUT_DOWN]==1)//↓
ch.muki=2;
else if (Key[KEY_INPUT_RIGHT]==1)//右
ch.muki=3;
else
ch.walking_flag=0;
}
if(ch.walking_flag==1){ //ここからが問題かなと思っています
if (ch.muki==0){ //上
ch.img = image[w%8];
ch.y--;
i++;
if( i > 8 ){
w++;
i = 0;
}
}
else if (ch.muki==1){ //左
w = 11;
if(w == 16){
ch.img = image[w%21];
}
w++;
ch.x--;
}
else if (ch.muki==2){ //↓
ch.img = image[w%8];
ch.y++;
i++;
if( i > 8 ){
w++;
i = 0;
}
}
else if (ch.muki==3){ //右
ch.img = image[w%8];
ch.x++;
i++;
if( i > 8 ){
w++;
i = 0;
}
}
}
ch.img = image[w];
DrawGraph( ch.x,ch.y,ch.img,TRUE); //画像描画
ScreenFlip(); //裏画面を表画面に反映
}
DxLib_End(); //DXライブラリ終了処理
return 0;
}
参考にしたのは、このサイトです。