問題の箇所のソースを載せます。
for(i=0;i<50;i++){
if(jiki.flag==0){
jiki.x=jiki.tx+10;
jiki.y=jiki.ty+10;
}
if(jiki.flag==1){
jiki.y-=10;
jiki.nagasa+=10;
if(jiki.y<0){
jiki.flag=0;
jiki.nagasa=0;
}
if(i>0&&i<49&&jiki.nagasa>100) {
jiki.flag[i+1]=1;
}
}
}
if(Key[KEY_INPUT_Z]==1){
for(i=0;i<50;i++){
if(i==0){
jiki.flag[i]=1;
}
if(jiki.flag[i]==0&&jiki.flag[i-1]==1&&jiki.nagasa[i-1]>100){
jiki.flag[i]=1;
}
}
jiki.count=0;
}
for(i=0;i<50;i++){
DrawCircle(jiki.x[i],jiki.y[i],3,BLACK);
}
変数については
//自機
typedef struct{
int tx; //本体のX座標
int ty; //本体のY座標
int x[50]; //弾のX座標
int y[50]; //弾のY座標
int flag[50]; //弾のフラグ
int hp; //本体のHP
int nagasa[50]; //次の弾のフラグを1にする基準
int count; //カウンター(未使用)
}jstruct;
jstruct jiki;
です。
回答お願いします。
弾が長押しで止まらなくなるのを防ぐ方法
Re:弾が長押しで止まらなくなるのを防ぐ方法
止まらなくというのがわからないのですが…
連射を撃ちたくないのでしょうか?
連射に間を開けたいのでしょうか?
Zボタンを押した後に次の弾はもう一度おしなおすまででなくしたいのでしょうか?
とりあえず弾を1発撃つことができたらループから向けてはどうでしょうか?
後は次の弾を撃つまでの間をカウンタで調節してあげれば行けると思うのですが…
if(Key[KEY_INPUT_Z]==1){
for(i=0;i<50;i++){
if(i==0){
jiki.flag=1;
break;
}
if(jiki.flag==0&&jiki.flag[i-1]==1&&jiki.nagasa[i-1]>100){
jiki.flag=1;
break;
}
}
jiki.count=0;
}
こんな感じでしょうか?
勘違いならすいません。
==========
もしかして…
一度ボタンを押しいた後、ボタンを押してないときも弾が出てたりしませんか?
=============
if(i>0&&i<49&&jiki.nagasa>100) {
jiki.flag[i+1]=1;
}
これって必要なのでしょうか?
自動で弾を撃ってるように見えるのですが…
連射を撃ちたくないのでしょうか?
連射に間を開けたいのでしょうか?
Zボタンを押した後に次の弾はもう一度おしなおすまででなくしたいのでしょうか?
とりあえず弾を1発撃つことができたらループから向けてはどうでしょうか?
後は次の弾を撃つまでの間をカウンタで調節してあげれば行けると思うのですが…
if(Key[KEY_INPUT_Z]==1){
for(i=0;i<50;i++){
if(i==0){
jiki.flag=1;
break;
}
if(jiki.flag==0&&jiki.flag[i-1]==1&&jiki.nagasa[i-1]>100){
jiki.flag=1;
break;
}
}
jiki.count=0;
}
こんな感じでしょうか?
勘違いならすいません。
==========
もしかして…
一度ボタンを押しいた後、ボタンを押してないときも弾が出てたりしませんか?
=============
if(i>0&&i<49&&jiki.nagasa>100) {
jiki.flag[i+1]=1;
}
これって必要なのでしょうか?
自動で弾を撃ってるように見えるのですが…
