キャラクターの画像素材が縦横の向きで16個あり合計120*184(1体30*46)の1枚の連結画像となっています。
こちらの画像を4*4で分割して歩行させようとしています。
また、移動中にキーを離してもすぐ止まらずに1区間(32ピクセル)に到達するまで歩かせたいのです。
キャラクターの画像素材の配置としては上から正面、左向き、右向き、後ろ向きとなっており、
左から順に左足を前に出している絵、両足揃えている絵、右足を前に出している絵、両足を揃えている絵、となっております。
分割例)
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
画像の分割読み込みには成功しているのですが、
どうも「キーを離したときに両足を揃えている絵になるまで歩かせる(1区間に到達するまで歩かせる)」というのがうまくコーディングできません・・・
ゲームプログラミングの館のほうにも足を向けて、理論などは理解したのですが、なかなか・・・
私が書いたコードを掲載します。
CharaX,CharaY はキャラクターのXY座標です。
PNum はキャラクターの画像素材を分割読み込みした時の管理番号です。
ゆっくり歩かせたいため移動値は0.25fとさせて頂いております。
void CharacterToDoInfo(void){
//DOWN
if (CheckHitKey(KEY_INPUT_DOWN) != 0){
//整数値ならPNum(向きを管理している番号を増やして歩いているように見せる)
if (fmodf(CharaY, 1) == 0) {
PNum = ((fmodf(CharaY, 40) / 10) + 0);
}
CharaY = (CharaY - 0.25f);
if (fmodf(CharaY, 30) != 0) {
CharaY++;
}
}
//EFT
if (CheckHitKey(KEY_INPUT_LEFT) != 0){
if (fmodf(CharaX, 1) == 0){
PNum = ((fmodf(CharaX, 40) / 10) + 4);
}
CharaX = (CharaX - 0.25f);
if (fmodf(CharaX, 30) != 0){
CharaX--;
}
}
//RIGHT
if (CheckHitKey(KEY_INPUT_RIGHT) != 0){
if (fmodf(CharaX, 1) == 0){
PNum = ((fmodf(CharaX, 40) / 10) + 8);
}
CharaX = (CharaX + 0.25f);
if (fmodf(CharaX, 30) != 0){
CharaX++;
}
}
//UP
if (CheckHitKey(KEY_INPUT_UP) != 0){
if (fmodf(CharaY, 1) == 0){
PNum = ((fmodf(CharaY, 40) / 10) + 12);
}
CharaY = (CharaY - 0.25f);
if (fmodf(CharaY, 30) != 0){
CharaY--;
}
}
}