連射

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yy1995113

連射

#1

投稿記事 by yy1995113 » 6年前

C言語の館で敵のショットのプログラムを参考にさせていただいたものです。
水平方向ばら撒きショットについてなのですが、指定した弾の数は出るのですが、連射させることがどうしてもうまくいきません。
教えてもらえないでしょうか?

ISLe
記事: 2648
登録日時: 9年前
連絡を取る:

Re: 連射

#2

投稿記事 by ISLe » 6年前

指定した弾の数は出るということは、ショットボタンが押されたらばら撒きショットを一工程行うことは既にできているということですね。

その一工程のあいだに新たにショットボタンが押されたら、続けてもう一工程繰り返すようにすると連射になります。
一工程のあいだに何回ショットボタンを押されても、もう一工程繰り返すだけです。
ばら撒きショットは一定時間自動連射ですので、いわゆるセミオートマショットです。

ショットボタンの連射速度によってショットの発射間隔を短くしたいのであれば、もうひと工夫必要です。

yy1995113

Re: 連射

#3

投稿記事 by yy1995113 » 6年前

返信遅れて大変申し訳ございません。
考えた結果このままいくことにしました。質問しておきながら申し訳ありません。

そして、本当に不躾で申し訳ないのですが、もう一つ質問があります。最初に敵はYのマイナス方向に進み、敵があるY座標に到達したらその場にとどまり、弾を打つ。弾が画面外に出たらまたYのマイナス方向に移動し、画面外に出たらその敵フラグが下りる、という風にやりたいのです。しかし、止まって球を打つまではうまくいくのですが、再びYのマイナス方向に移動するというのがどうしてもできません。どうすればいいのでしょうか?

ソースを張っておきます。見にくかったらすいません。よろしくお願いします。

//移動ルーチン
{
if(enemy->Flag4==true)
{
enemy->eY-=7;

for(int i=0;i<EShotNum2;i++)
{
if(enemy->eY<50)//もしY座標50に到達したら
{
enemy->eY=50;//止まる
EnemyShot2(enemy,Player,enemy->EShot); //水平ショットを打つ
}

if(EShot2.Y==500||EShot2.X==700)//水平ショットが画面外に出たら
{
enemy->eY-=7;//-7進む
}
}

}
}
}

nil
記事: 428
登録日時: 8年前

Re: 連射

#4

投稿記事 by nil » 6年前

ショットが固定速ならば
時間経過で再び上に進むようにすれば良いと思います。

ISLe
記事: 2648
登録日時: 9年前
連絡を取る:

Re: 連射

#5

投稿記事 by ISLe » 6年前

水平ショットが画面外に出たらというのは、変化であって状態ではありません。
進み続けるようにするには状態を変化させ維持する仕組みが必要です。

状態変化について知りたかったら新しくトピックを立ててください。

yy1995113

Re: 連射

#6

投稿記事 by yy1995113 » 6年前

一応時間経過でやるようにしましたがなかなかうまくいきません。
もう心がおれそうです。自分で解決ができなくて悔しくて仕方がありません。

ソースを張るのでみてもらえないでしょうか?
本当に申し訳ありません。

//移動ルーチン
{
if(enemy->Flag4==true)
{
enemy->eY-=7;

if(enemy->eY<50)//もしY座標50に到達したら
{
enemy->eY=50;//止まる
EnemyShot2(enemy,Player,enemy->EShot); //水平ショットを打つ
}

enemy->enemyCounter++;//秒数をプラス

if(enemy->enemyCounter==120)//フレームが120になったら
{
enemy->eY-=7;
}
}
}

アバター
へにっくす
記事: 630
登録日時: 8年前
住所: 東京都

Re: 連射 (初めの質問と違うよね?)

#7

投稿記事 by へにっくす » 6年前

タイトルが「連射」なのですが
今の質問は「連射」じゃないよね。
ISLeさんの投稿見てないのですか?

ちなみに掲示されたソースではうまく動かないのは当然です。

知りたければ
いったんここは解決にして
新しく投稿してください。
written by へにっくす

閉鎖

“C言語何でも質問掲示板” へ戻る