アクションRPGを作っているのですが(ツクールやウディタのようなマス移動)
キャラの4方向にほかのキャラがいたらそのキャラが持っているメンバ変数の上下左右のフラグをtrueになるようにしたいのですが、
どのキャラと接触してもDrawStringの文字はちゃんと表示されるのですが、
フラグだけは1番目のキャラとしか反応してくれなかったり、
うまくいきません。(プレイヤーは0番目)
Visual C++ 2010 、DXライブラリを使用しています。
よろしくお願いします。
void Control::FourOnCollision(){
for(int i=0;i<ENEMY_NUM;i++){
if(gamechara[i]->GetExist()){ //生存チェック
for(int t =0;t<ENEMY_NUM;t++){ //ターゲット
if(gamechara[t]->GetExist()){
if(i==t)continue; //同じキャラは判定しない
int result =collision->FouronCollision( //当たり判定
gamechara[i]-> GetCollRightX(),gamechara[i]-> GetCollRightY(),
gamechara[i]->GetCollRightW(),gamechara[i]->GetCollRightH(),
gamechara[i]-> GetCollLeftX(),gamechara[i]-> GetCollLeftY(),
gamechara[i]->GetCollLeftW(),gamechara[i]-> GetCollLeftH(),
gamechara[i]-> GetCollUpX(),gamechara[i]-> GetCollUpY(),
gamechara[i]->GetCollUpW(),gamechara[i]-> GetCollUpH(),
gamechara[i]-> GetCollDownX(),gamechara[i]-> GetCollDownY(),
gamechara[i]->GetCollDownW(),gamechara[i]-> GetCollDownH(),
gamechara[t]->GetX(),gamechara[t]->GetY(),
gamechara[t]->GetWidth(),gamechara[t]->GetHeight());
if(result==1){ //右
gamechara[i]->SetboRight(true);
DrawString(100,200,"右",GetColor(255,255,0),0);
}else{gamechara[i]->SetboRight(false);}
if(result==2){ //左
gamechara[i]->SetboLeft(true);
DrawString(100,220,"左",GetColor(255,255,0),0);
}else{gamechara[i]->SetboLeft(false);}
if(result==3){ //上
gamechara[i]->SetboUp(true);
DrawString(100,240,"上",GetColor(255,255,0),0);
}else{gamechara[i]->SetboUp(false);}
if(result==4){ //下
gamechara[i]->SetboDown(true);
DrawString(100,260,"下",GetColor(255,255,0),0);
}else{gamechara[i]->SetboDown(false);}
}
}
}
}
}