初歩的な質問。
投稿者 : 作成好き(p13100-adsau12honb8-acca.tokyo.ocn.ne.jp)
- 2003/07/03(Thu) 22:18
No.3848
|
|
|
|
|
Zキーでガトリング、Xキーでミサイル。と言うように、 色々と作成してみたのですが、通常時、最強と考えられる 「ミサイル」は、連射性が強すぎるので、連射が出来ない (前の弾が消えるまで、次の弾が撃てない等)指定は できるでしょうか?簡単に言ってしまうと、通常武器の ガトリングは、キーを押した階数分の発射。ミサイルは 「1秒に1回しか発動できない」武器としたいのです。
初心者ゲームプログラマーの質問に回答願います(おい
|
Re: 初歩的な質問。
投稿者 : JAM(pl056.nas322.okayama.nttpc.ne.jp)
- 2003/07/04(Fri) 01:10
No.3850
|
|
|
|
ミサイル発射のインターバルが1秒(=60フレーム)とすると, while(1){ interval--; if(getkey(88)==1 && interval<=0){ //キーが押されてインターバルが0以下なら interval=60; //インターバルを60フレーム設ける appear・・・ //ここでミサイル出現処理 } update(); } でどうでしょう. getkey(88)==1 を getkey(88)>0 にすると 押しっぱなしで1秒ごとに発射されます.
あと,弾数制限については記事No.290を見て下さい.
|
Re: 初歩的な質問。
投稿者 : 作成好き(p17110-adsau14honb8-acca.tokyo.ocn.ne.jp)
- 2003/07/04(Fri) 19:08
No.3855
|
|
|
|
どうも、ありがとうございます。 今後(今日もある!?)また質問するやも しれませんので、宜しくお願い致します。
m(_ _)m
|
Re: 初歩的な質問。
投稿者 : 作成好き(p14100-adsau14honb8-acca.tokyo.ocn.ne.jp)
- 2003/07/05(Sat) 11:02
No.3860
|
|
|
|
やってみたのですが、うまく行きませんでした。
現在、MyCherオブジェクトはこうなってます。
extends SpriteChar;
function onDie() { appear(new Bomb($myChar.x , $myChar.y ,$pat_Sample+4));
}
while(1) {
if (getkey(39)>0 && x<$screenWidth ) x=x+3;
if (getkey(37)>0 && x>0) x=x-3;
if (getkey(90)==1) appear(new Tama(x,y,$pat_Sample+1)); update();
}
どう言う風に追加すれば言いのでしょうか?
|
Re: 初歩的な質問。
投稿者 : shen(p1090-ipad03sizuokaden.shizuoka.ocn.ne.jp)
- 2003/07/05(Sat) 11:15
No.3861
|
|
|
|
extends SpriteChar;
function onDie() { appear(new Bomb($myChar.x , $myChar.y ,$pat_Sample+4));
}
while(1) { interval--; if (getkey(39)>0 && x<$screenWidth ) x=x+3;
if (getkey(37)>0 && x>0) x=x-3;
if (getkey(90)==1 && interval<=0) { interval=60*1;/60*秒数 appear(new Tama(x,y,$pat_sample+4)); } update();
}
これでできると思います。できない場合は他に原因があるのではないでしょうか。
|
Re: 初歩的な質問。
投稿者 : shen(p1090-ipad03sizuokaden.shizuoka.ocn.ne.jp)
- 2003/07/05(Sat) 11:18
No.3862
|
|
|
|
extends SpriteChar;
function onDie() { appear(new Bomb($myChar.x , $myChar.y ,$pat_Sample+4));
}
while(1) { interval--; if (getkey(39)>0 && x<$screenWidth ) x=x+3;
if (getkey(37)>0 && x>0) x=x-3;
if (getkey(90)==1 && interval<=0) { interval=60*1;/60*秒数 appear(new Tama(x,y,$pat_sample+4)); } update();
}
これでできると思います。できない場合は他に原因があるのではないでしょうか。
|
Re: 初歩的な質問。
投稿者 : shen(p1090-ipad03sizuokaden.shizuoka.ocn.ne.jp)
- 2003/07/05(Sat) 11:24
No.3863
|
|
|
|
Re: 初歩的な質問。
投稿者 : 作成好き(p14100-adsau14honb8-acca.tokyo.ocn.ne.jp)
- 2003/07/05(Sat) 18:56
No.3864
|
|
|
|
成功したのですが、1つ疑問が生まれてしまいました。
if (getkey(90)==1 && interval<=0) interval=60 appear(new Tama(x,y,$pat_sample+4));
if (getkey(88)==1 && interval<=0) { interval=60 appear(new Tama(x,y,$pat_sample+4));
と言うように、記入すると、何もキーを押していない のにも関わらず、連続で弾が出てしまうのです・・・。 まだ、決定的に決まった訳では、無いので、試します。
情報ありがとうございました。
|
Re: 初歩的な質問。
投稿者 : N.(27.5.244.43.ap.livedoor.jp)
- 2003/07/05(Sat) 21:49
No.3867
|
|
|
|
{ }を省略したままです。 条件のあとに複数の処理を入れるときは、必ず必要になります。
if (getkey(90)==1 && interval<=0){ interval=60 appear(new Tama(x,y,$pat_sample+4)); }
if (getkey(88)==1 && interval<=0) { interval=60 appear(new Tama(x,y,$pat_sample+4)); }
|
Re: 初歩的な質問。
投稿者 : shen(p6098-ipad27sizuokaden.shizuoka.ocn.ne.jp)
- 2003/07/05(Sat) 21:51
No.3868
|
|
|
|
{}を使っていないのが原因ではないでしょうか。 if (getkey(90)==1 && interval<=0){ interval=60; appear(new Tama(x,y,$pat_sample+4)); } こうすればできるのでは?
|
Re: 初歩的な質問。
投稿者 : shen(p6098-ipad27sizuokaden.shizuoka.ocn.ne.jp)
- 2003/07/05(Sat) 21:52
No.3869
|
|
|
|
おおお!
投稿者 : 作成初心者(p11083-adsau14honb8-acca.tokyo.ocn.ne.jp)
- 2003/07/06(Sun) 15:06
No.3876
|
|
|
|
ありがとうございます。あ、HN変えました。 色々な方々に手伝ってもらい、ようやく自分なりの ゲームが作成できそうです。ありがとうございます。
|
|