記事No.8685,8696の・・・
投稿者 : 蝶蚊(58x80x133x75.ap58.ftth.ucom.ne.jp)
- 2005/09/08(Thu) 11:55
No.8714
|
|
|
|
|
何度も何度もすみません。頑張ってみましたが、頭が痛くなるばかりで・・・・・・。ジャンプし続ける、というのはまだ解決出来ていませんが、別の質問を・・・。 またキャラ交代の件なんですけど、「非操作キャラの時は攻撃を受けない・穴に落ちない(しかし、操作キャラが落ちた場合のみ落ちる。)が、操作キャラが敵に当たるか、特定のキーを押して交代すると攻撃を受けたり、穴に落ちたりするようになる。というプログラムは、出来ますか? 宜しくお願いします
|
Re: 記事No.8685,8696の・・・
投稿者 : N@N(actkyo094064.adsl.ppp.infoweb.ne.jp)
- 2005/09/08(Thu) 22:12
No.8718
|
|
|
|
「攻撃を受けない」には、いくつかの方法があります。 (プログラムはNo.8696のスレッドのものを想定しています) 例えば、弾にあたり判定を付けていて、 if (crashTo($A)){//当たった時の処理} if (crashTo($B)){//当たった時の処理} とすれば、両方に当たってしまいますが、 操作キャラのとき、変数control=1であることに注目すれば、 if (crashTo($A) && $A.control==1){//当たった時の処理} if (crashTo($B) && $B.control==1){//当たった時の処理} こうすることで、操作しているほうだけに当たり処理を行うことができます。 結果、非操作は攻撃を受けません。
「穴に落ちない」というのは、ちょっと工夫が必要な技術です。 落ちそうになったら2段ジャンプとか、それでも落ちそうになったらどうするかなど、 一応組み立てはできますが・・・・・ キャラのy座標と足元のパターンの関係、$Aと$Bとのy座標差とx方向y方向の速度がヒントになりそうです。 こちらでも余裕があればサンプルを改造してみます。
一方のキャラが消えることがあるならば、その時にもう一方のキャラのcontrolを必ず1にしなければなりません。 オブジェクトが消えるときに必ず通る部分は、文頭か文末の function onDie(){//この中に書くと便利です。}
|
Re: 記事No.8685,8696の・・・
投稿者 : 蝶蚊(58x80x133x75.ap58.ftth.ucom.ne.jp)
- 2005/09/09(Fri) 15:33
No.8719
|
|
|
|
どうもありがとうございます。でも・・・何故か敵に操作キャラが敵に当たったら敵の方が消えてしまいました・・・。 ↓これじゃあ、だめなのでしょうか? if (crashTo($A)) { // 自機とぶつかったら if (crashTo($A) && $A.control==1){//当たった時の処理} // 自機は敵より少し上にいて、下方向に速度をもっているならば die(); // 敵が死ぬ $score=$score+100; $A.vy=-5; // 自機がはねあがる } else { $A.die(); // そうでなければ自機が死ぬ } }
if (crashTo($B) && $B.control==1){//当たった時の処理} // 自機とぶつかったら if ( $B.y < y-8 && $B.vy>0 ) { // 自機は敵より少し上にいて、下方向に速度をもっているならば die(); // 敵が死ぬ $score=$score+100; $B.vy=-5; // 自機がはねあがる } else { $B.die(); // そうでなければ自機が死ぬ } }
|
Re: 記事No.8685,8696の・・・
投稿者 : N@N(actkyo090067.adsl.ppp.infoweb.ne.jp)
- 2005/09/09(Fri) 17:43
No.8720
|
|
|
|
ちょっと誤解があったようで・・・・ {//当たった時の処理}というのは、{ }の中に、ぶつかった時にどうするかを書くことを言いたかったのです。 つまり、 if (crashTo($A) && $A.control==1) { // 自機とぶつかったら if ($A.y<y-8 && $A.vy>0){// 自機は敵より少し上にいて、下方向に速度をもっているならば die(); // 敵が死ぬ $score=$score+100; $A.vy=-5; // 自機がはねあがる } else { $A.die(); // そうでなければ自機が死ぬ } } このようにすることです。Bについても、$Aを置き換えて考えてください。
|
Re: 記事No.8685,8696の・・・
投稿者 : 蝶蚊(58x80x133x75.ap58.ftth.ucom.ne.jp)
- 2005/09/11(Sun) 13:00
No.8730
|
|
|
|
8730.zip
ありがとうございます。ところで・・・操作キャラが敵に当たったら、非操作キャラに交代しますよね? でも、交代したら完全に操作できなくなってしまいます。 どうしてでしょうか?
|
Re: 記事No.8685,8696の・・・
投稿者 : N@N(actkyo146244.adsl.ppp.infoweb.ne.jp)
- 2005/09/12(Mon) 21:35
No.8738
|
|
|
|
No.8718の、 >一方のキャラが消えることがあるならば、その時にもう一方のキャラのcontrolを必ず1にしなければなりません。 >オブジェクトが消えるときに必ず通る部分は、文頭か文末の >function onDie(){//この中に書くと便利です。} これを実装する段階に来ています。
Aでいえば、extends SpriteChar;の下あたりに、 function onDie(){ $B.control=1; } と書いておけば、Aが消えた時に自動的にBのcontrolが1になる、 つまりBが操作キャラになります。
|
返事遅れてすんませんっ
投稿者 : 蝶蚊(58x80x133x75.ap58.ftth.ucom.ne.jp)
- 2005/09/15(Thu) 16:01
No.8754
|
|
|
|
おォ!なるほど・・・。どうもありがとうございました
|
|