1つまでしか表示できませんでした。
Enemy_Initializeですべての弾丸のフラグを0にしてから始めて、
Ningyo->Shotという変数が1になった瞬間にfor文で弾丸の初期位置設定をしてFlagを1にする。
Flagが1の弾だけ表示されながら左に動くという設定のつもりなのですが、どこが原因でしょうか?
#include "DxLib.h"
#include "Enemy.h"
#include "Player.h"
#include "KeyBoard.h"
extern int CameraX;
int WaterBlueShotImage;
void Enemy_Initialize(Ningyo_t *Ningyo, NingyoTama_t *NingyoTama){
LoadDivGraph( "Image/Chara/Ningyo.png" , 6 , 6 , 1 , 144 , 144 , Ningyo->DivImage );//画像の分割読み込み
WaterBlueShotImage = LoadGraph("Image/Shot/WaterBlueShot.png");
Ningyo->Enter=0;
Ningyo->Flag=0;
Ningyo->JumpPower=0;
Ningyo->Jump=0;
Ningyo->JumpAccel=0.4;
Ningyo->RakkaCount=0;
Ningyo->Count=0;
Ningyo->ShotCount=0;
Ningyo->ShotAnime=0;
NingyoTama->Flag[0]=0;
NingyoTama->Flag[2]=0;
NingyoTama->Flag[2]=0;
NingyoTama->Flag[3]=0;
NingyoTama->Flag[4]=0;
NingyoTama->Flag[5]=0;
NingyoTama->Flag[6]=0;
NingyoTama->Flag[7]=0;
NingyoTama->Flag[8]=0;
NingyoTama->Flag[9]=0;
NingyoTama->Flag[10]=0;
}
//敵の出現条件
void Enemy_Enter(Player_t *Player,Ningyo_t *Ningyo){
if( Player->X>=256 && Ningyo->Enter==0 && Ningyo->Flag==0 ){
Ningyo->Enter=1;
}
}
//移動パターン
void Ningyo_Pattern(Ningyo_t *Ningyo, NingyoTama_t *NingyoTama){
Ningyo->ViewX = Ningyo->X-CameraX;
//初期位置&フラグ
if(Ningyo->Enter==1){
Ningyo->Flag=1;
Ningyo->X=400+CameraX;
Ningyo->Y=384;
Ningyo->Image=Ningyo->DivImage[0];
Ningyo->Enter=0;
Ningyo->Count=0;
Ningyo->RakkaCount=0;
}
//フラグが1の間だけ処理
if(Ningyo->Flag==1){
Ningyo->Count++;
//ジャンプ
if(Ningyo->Count==1){
Ningyo->JumpPower = 18;
Ningyo->Jump=1;
Ningyo->Image=Ningyo->DivImage[0];
}
//ジャンプ中は落下させる
if(Ningyo->Jump==1){
Ningyo->Y-=(int)Ningyo->JumpPower;
Ningyo->JumpPower-=Ningyo->JumpAccel;
}
if(Ningyo->JumpPower<=0 && Ningyo->RakkaCount<=16){//アニメ
Ningyo->RakkaCount++;
Ningyo->Image = Ningyo->DivImage[(Ningyo->RakkaCount%24)/8+1];
}
//地面についたら着地
if(Ningyo->Jump==1 && Ningyo->JumpPower<0 && Ningyo->Y+144>=320){
Ningyo->Jump=0;
Ningyo->JumpPower=0;
Ningyo->Image = Ningyo->DivImage[4];
}
//一定間隔で2発まだらに撃つ
if(Ningyo->Count>=120){
if(Ningyo->Count%180==0 || Ningyo->Count%150==0 ){
Ningyo->Shot=1;
Ningyo->ShotAnime=1;
}
}
//撃つ瞬間に弾の初期設定(ここが原因?)
if(Ningyo->Shot==1){
for(int i = 0; i < 10; i++)
{
if(NingyoTama->Flag[i] == 0)
{
//弾の初期化
NingyoTama->Flag[i] = 1;
NingyoTama->X[i] = Ningyo->ViewX-32;
NingyoTama->Y[i] = Ningyo->Y+96;
}
}
}
Ningyo->Shot=0;
if(Ningyo->ShotAnime==1){//8フレームだけ撃ってる画像に
Ningyo->ShotCount++;
if(Ningyo->ShotCount<=8)
Ningyo->Image=Ningyo->DivImage[5];
if(Ningyo->ShotCount>8){
Ningyo->Image=Ningyo->DivImage[4];
Ningyo->ShotCount=0;
Ningyo->ShotAnime=0;
}
}
//弾の移動
for(int i = 0; i < 10; i++)
{
if(NingyoTama->Flag[i] == 1)
{
NingyoTama->X[i] = NingyoTama->X[i] - 7;
if(NingyoTama->X[i] > 512 || NingyoTama->X[i] < -64)
{
//弾が範囲をオーバーしたら削除
NingyoTama->Flag[i] = 0;
}
NingyoTama->Img[i] = WaterBlueShotImage;
}
}
}
}
//敵描画
void Enemy_Draw(Ningyo_t Ningyo, NingyoTama_t NingyoTama){
//人魚
DrawGraph( Ningyo.ViewX, Ningyo.Y , Ningyo.Image, TRUE ) ;
for(int i = 0; i < 10; i++)
{
if(NingyoTama.Flag[i] == 1)
{
DrawGraph( NingyoTama.X[i], NingyoTama.Y[i], NingyoTama.Img[i], TRUE );
}
}
}