弾
投稿者 : Ω(i60-42-200-96.s02.a023.ap.plala.or.jp)
- 2006/05/22(Mon) 20:57
No.9844
|
|
|
|
|
現在、横スクロールシューティングゲームを作っていますが 敵から弾を出したいのですがじきに向かって飛ばしてくる ように作りたいのですが extends SpriteChar; function onDie() { appear(new Bomb2(x,y,$pat_kei+4)); }
while(x>-50){ x-=2; for (t in $chars) { if ( t is Tama && crashTo(t) ) { die(); $score+=10; } } if (crashTo($jiki)) $jiki.die(); update(); } のどこになにをいれればよいのですか? おしえてください
|
Re: 弾
投稿者 : Ω(i222-150-2-186.s02.a023.ap.plala.or.jp)
- 2006/05/23(Tue) 20:21
No.9855
|
|
|
|
訂正します extends SpriteChar; function onDie() { appear(new Bomb2(x,y,$pat_kei+4)); }
while(x>-50){ x-=2; if (rnd( 100 )==0) appear(new tamaa(x,y,$pat_kei+4)); for (t in $chars) { if ( t is Tama && crashTo(t) ) { die(); $score+=10; } } if (crashTo($jiki)) $jiki.die(); update(); } のなにをいれたらいいですか?
|
Re: 弾
投稿者 : aujourd'hui(p5054-ipad01akita.akita.ocn.ne.jp)
- 2006/05/24(Wed) 13:56
No.9860
|
|
|
|
こんにちは。 まず、tamaaクラスの中に a=angle($jiki.x-x,$jiki.y-y); をループ文の上に追加します。 次に、 x+=cos(a); y+=sin(a); をループ文の中に追加します。 もし、このオブジェクトがDXSpriteで作成されていない場合、 コンストラクタを使ってみましょう。 次の文をextend 〜char;の下の行に追加します。 constructor tamaa(x,y,p,f,angle){ super(x,y,p,f); this.angle=angle; } なぜかと言いますと、Spriteオブジェクトでされている場合、angleメソッドを使うと、定義されていないとエラーになる場合があります。 コンストラクタについての解説は、Tonyu LabのHPにあります。
|
Re: 弾
投稿者 : Ω(i58-89-59-129.s02.a023.ap.plala.or.jp)
- 2006/05/26(Fri) 17:10
No.9863
|
|
|
|
Re: 弾
投稿者 : aujourd'hui(p5146-ipad07akita.akita.ocn.ne.jp)
- 2006/05/27(Sat) 12:06
No.9876
|
|
|
|
9876.zip
Sample添付します。 とりあえず、即興で作成しました。が、ホーミングミサイルなどを作りたい場合は、他の人のシューティングのサンプルが参考になります。 あと、極力自分で検索などをかけ、目的のスクリプトに近い物を探しましょう。 よくわからなければ、わかる努力をしましょう。(アルゴリズムを鍛える点で。) そうすれば、自分なりのアーキテクチャが出来上がるはずです。 (プログラマーは、原則、自分で調べ上げ、解決出来なければなりません。)
|
Re: 弾
投稿者 : Ω(i219-164-47-204.s02.a023.ap.plala.or.jp)
- 2006/05/27(Sat) 17:37
No.9880
|
|
|
|
/////teki.tonyu///// extends SpriteChar; function onDie() { appear(new Bomb2(x,y,$pat_kei+4)); }
a=angle( jiki.x-x, jiki.y-y ); // a:jikiへの角度 while (1) { x+=cos(a); y+=sin(a); x-=4; if (rnd( 10000 )==0) appear(new tamaa(x,y,$pat_kei+4)); for (t in $chars) { if ( t is bomb && crashTo(t) ) { die(); } } if (crashTo($jiki)) $jiki.die(); update(); } と少々改良しましたが <変数jikiは初期化されていないため、メンバ変数Yを参照できません> と出てきてしまいます。 どうしたら直るか教えてください サンプルつけます
|
Re: 弾
投稿者 : Ω(i222-150-1-35.s02.a023.ap.plala.or.jp)
- 2006/05/28(Sun) 13:24
No.9882
|
|
|
|
サンプルが事情によりつけられませんでした。 あと初期化の仕方を教えてください
|
Re: 弾
投稿者 : aujourd'hui(p8244-ipad08akita.akita.ocn.ne.jp)
- 2006/05/28(Sun) 14:09
No.9883
|
|
|
|
こんにちは。 >変数jikiは初期化されてないため、メンバ変数Yを参照できません
この場合、jikiをtekiクラスのメンバ変数と解釈しています。
$クラス名=オブジェクト $クラス名以外=グローバル変数 この場合、オブジェクトなのか、メンバ変数なのか、分からないため、エラーになります。 で、このangleメソッドはオブジェクトの角度を求めるので、 a=angle(jiki.x-x,jiki.y-y)のjikiの前に$を付けてみてください。 ですから、crashtoのところでは、オブジェクト同士の当たり判定を求めるので、エラーになってないはずです。
|
Re: 弾
投稿者 : Ω(i220-109-165-30.s02.a023.ap.plala.or.jp)
- 2006/05/29(Mon) 17:23
No.9886
|
|
|
|
< この場合、オブジェクトなのか、メンバ変数なのか、分からないため、エラーになります。 で、このangleメソッドはオブジェクトの角度を求めるので、 a=angle(jiki.x-x,jiki.y-y)のjikiの前に$を付けてみてください。 ですから、crashtoのところでは、オブジェクト同士の当たり判定を求めるので、エラーになってないはずです。 > $をどうやってつけるのがわかりません。 おしえてください
|
Re: 弾
投稿者 : aujourd'hui(p3084-ipad01akita.akita.ocn.ne.jp)
- 2006/05/30(Tue) 17:09
No.9890
|
|
|
|
a=angle($jiki.x-x,$jiki.y-y);です。
|
Re: 弾
投稿者 : Ω(i58-89-57-249.s02.a023.ap.plala.or.jp)
- 2006/05/31(Wed) 18:37
No.9893
|
|
|
|
|