出した敵が一回動いたきりで固まってしまっています。
敵を動かす部分を載せましたので、どうすれば正しく動くようになるかアドバイスをお願いします。
敵の動かし方は「ランダムに向きを決定し、一マス動かす」で、当たり判定等はクリアしていると見てください。
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; } } } }