出した敵が一回動いたきりで固まってしまっています。
敵を動かす部分を載せましたので、どうすれば正しく動くようになるかアドバイスをお願いします。
敵の動かし方は「ランダムに向きを決定し、一マス動かす」で、当たり判定等はクリアしていると見てください。
void enemyChangeVector(int Num){//敵キャラの向きを変える
enemyData[Num].vector = GetRand(100)%4;//向きをかえる
}
void enemyMoveFlag(int Num){//敵の動きフラグ
if(enemyData[Num].true_X%16 ==0 && enemyData[Num].true_Y%16 == 0){
enemyData[Num].walking_flag = true; //歩くフラグを立てる。
if(enemyData[Num].walking_flag == true) //もし歩くとき
{
if(enemy_Can_Or_Cannot(enemyData[Num].vector, Num) == true
|| enemy_checkHigh(enemyData[Num].vector , Num) == true
|| enemy_searchMine(enemyData[Num].vector , Num) == false)//行き先が歩けなかったら
{
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。
}
}
}
}
int actionPattern = changeVector;
void enemyMove(int Num){
if(enemyData[Num].walking_flag == true){//歩くフラグが立っていたら
if(enemyData[Num].vector == up) //上向きならenemyData[Num].true_Y座標を減らす
{
enemyData[Num].true_Y-= 16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。
}
else if(enemyData[Num].vector == left) //左向きならenemyData[Num].true_Y座標を減らす
{
enemyData[Num].true_X -=16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。
}
else if(enemyData[Num].vector == down) //下向きならenemyData[Num].true_Y座標を増やす
{
enemyData[Num].true_Y +=16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。
}
else if(enemyData[Num].vector == right) //右向きならenemyData[Num].true_Y座標を増やす
{
enemyData[Num].true_X += 16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。
}
}
}
int Num = 0;//敵のナンバー
void enemyActionMain(){
if(timer() % 50 == 0){//50フレームに一度
if(enemyData[Num].life == 0){//ライフが0になったら
enemyData[Num].alive = false;//死亡
}
if(Num < CHARAMAX){//キャラの最大数を下回っていたら
}
else{//上回っていたら
Num = 0;//戻す
}
if(enemyData[Num].alive == true){//生きていたら動かす
switch(actionPattern){
case changeVector:
enemyChangeVector(Num);
actionPattern = move;
break;
case move:
enemyMoveFlag(Num);
enemyMove(Num);
actionPattern = changeVector;
Num++;//敵番号をインクリメント
break;
}
}
}
}