甲羅
投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 06:48
No.13232
|
|
|
|
|
13232.txt
今、甲羅を作ってます。甲羅を踏むと、アニメーションと甲羅が動かなくなり、横から蹴るとまた動き出すという風にしたいです。プログラムは少し長いので添付しておきます。
|
Re: 甲羅
投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:07
No.13235
|
|
|
|
有名なあれですね…w あの動きは初心者には少し難しいかもしれませんが、ヒントとして動きのフロチャート的なのをあげておきます。 Flowchart: スタート(変数の初期化とか) ┌─>↓ Yes Yes Yes │自機と当った → アニメーションストップ中? → 自機が自分よりも上 → アニメーションをストップ │ ↓ No ↓ No ↓ No │ │update();←┬─移動開始(vxに値を代入とか) 自機を死亡させる │ └─-┘ └────────────────────────────────┘
無駄に横長いうえに細かい部分は削っていますが、基本こんなものです。 あとは今までの知識を活用して試行錯誤してください。 アニメーションが止まってるかを調べる関数は無かったような気がするので、適当に変数を作ってフラグとして活用したりしてください。
|
Re: 甲羅
投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:11
No.13236
|
|
|
|
有名なあれですね…w あの動きは初心者には少し難しいかもしれませんが、ヒントとして動きのフロチャート的なのをあげておきます。 Flowchart: スタート(変数の初期化とか) ┌─>↓ Yes Yes Yes │自機と当った → アニメーションストップ中? → 自機が自分よりも上 → アニメーションをストップ │ ↓ No ↓ No ↓ No │ │update();←┬─移動開始(vxに値を代入とか) 自機を死亡させる │ └─-┘ └────────────────────────────────┘
無駄に横長いうえに細かい部分は削っていますが、基本こんなものです。 あとは今までの知識を活用して試行錯誤してください。 アニメーションが止まってるかを調べる関数は無かったような気がするので、適当に変数を作ってフラグとして活用したりしてください。
|
Re: 甲羅
投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/04(Sun) 13:11
No.13237
|
|
|
|
当たり判定の動作を、
1:動いている時は自機がやられるかどうかの判定をする 2:止まっている時は自機と反対方向に速度を加える
というようにif〜else文を加えればそのようになるはず。
と書こうとしたか先に書かれてしまいました・・・;
動いているかどうかをアニメーションではなくvxで判断したほうが良いかも。
|
Re: 甲羅
投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:14
No.13238
|
|
|
|
有名なあれですね…w あの動きは初心者には少し難しいかもしれませんが、ヒントとして動きのフロチャート的なのをあげておきます。 Flowchart: スタート(変数の初期化とか) ┌─>↓ Yes Yes Yes │自機と当った → アニメーションストップ中? → 自機が自分よりも上 → アニメーションをストップ │ ↓ No ↓ No ↓ No │ │update();←┬─移動開始(vxに値を代入とか) 自機を死亡させる │ └─-┘ └────────────────────────────────┘
無駄に横長いうえに細かい部分は削っていますが、基本こんなものです。 あとは今までの知識を活用して試行錯誤してください。 アニメーションが止まってるかを調べる関数は無かったような気がするので、適当に変数を作ってフラグとして活用したりしてください。
|
Re: 甲羅
投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:14
No.13239
|
|
|
|
Re: 甲羅
投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 13:36
No.13240
|
|
|
|
進行方向は、止まるために必要でおいています。あと、自機がふれると死ぬフラグを立ててしまっているので、蹴ることができません。一応こんな感じでできました。 if($Sell.vx=0){ if ($Mychar.x < x+1 && $Mychar.x > x-1) x+=vx; }else{ x-=vx; } 上から(仮)「甲羅が止まっているとき、自機がぶつかると動き出す。」です。 これであってるかはわかりませんが、改良できるのならお願いします。
推薦記事:
ジャンプ台
|
Re: 甲羅
投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/04(Sun) 14:24
No.13244
|
|
|
|
甲羅の速度を変えるためにvxに値を入れます。 x+=vx;はvxだけ移動してるだけなので注意。 また、甲羅自身の変数を参照する場合は「$sell.」は不要です。
if(vx==0){ // 甲羅が止まっている時 if ($Mychar.x - x < 0) vx= 4; // Mycharとのx座標を比較 else vx=-4; // Mycharから離れるようにvxを代入する a.loop($pat_shell+0,$pat_shell+3,3); // アニメーションを再開させる noHit = 6; // 数フレーム無敵にする(蹴った瞬間に死ぬのを防ぐため) } else { // 動いているとき if ( $Mychar.y < y-8 ) { // 自機が敵より少し上にいるならば vx=0; // 進行方向 a.pause(); } else if(noHit>0){ $Mychar.die(); // そうでなければ自機が死ぬ $projectManager.loadPage($page_index); } }
(プログラムの初めにnoHit=0;を、update();の上にnoHit--;を置いてください)
当たり判定の中身はだいたいこのようなプログラムになると思います。 蹴った瞬間に死んでしまうのを防ぐためにnoHit変数を使用しました。
|
Re: 甲羅
投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 14:45
No.13246
|
|
|
|
蹴って6フレームぐらいすると自機が死んでしまいます。どうすればいいでしょうか?
推薦記事:
ジャンプ台
|
Re: 甲羅
投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 15:10
No.13248
|
|
|
|
どうやら上から乗っかると蹴れるようです。 今度は自分用の甲羅を作りたいのですが、 extends SpriteChar; p=$pat_shell+0; noHit=300; vx=5; // 進行方向 a=newAnimation(); // AnimationAdapterを作成 a.loop($pat_shell+0,$pat_shell+3,3);// 敵の2つのパターンを往復するアニメーション while (1) { if (crashTo($Sell)) { // 自機とぶつかったら if ( $sell.y < y-8 && $sell.vy>0 ) { // 自機は敵より少し上にいて、下方向に速度をもっているならば vx=0; // 進行方向 a.pause(); p=$pat_shell+0; $Myshell.vy=-5; // 自機がはねあがる $score=$score+100; } else {
} } if ($map.getAt(x+10,y)==$pat_Block+1) { // 進行方向のマップパターンを調べ、ブロックのパターンだったら vx=-vx; // 進行方向を反転する } for (t in $chars) { if ( t is Weapon && crashTo(t) ) { $score=$score+100; die(); } } x+=vx; // 進行方向へ進む if (vx<0) f=1; else f=0; // vx が負(左向き)なら反転 if ($map.getAt(x,y+10)==$pat_Block+0) y+=3; noHit--; update(); } のプログラムに自機が乗ると動き出し、自由に操作できる。 敵甲羅と当ると跳ね返るが、HPが1つ減る。 という風にしたいのですが、どうすればいいでしょうか? TonyuアクションRPG様のリフトに乗るのサンプルのプログラムを見てみましたが、それにあたるようなプログラムはありませんぜした。 お願いします。
推薦記事:
ジャンプ台
|
Re: 甲羅
投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 15:36
No.13251
|
|
|
|
「甲羅に自機が乗る」ということは、どういった感じのプログラムを組めばよいと思いますか?まずはそれを書き出してみましょう。
|
Re: 甲羅
投稿者 : おへっほー(ntsitm184146.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 16:21
No.13254
|
|
|
|
簡単に言いますと、自機が甲羅の上に触れると乗るような状態にしたいです。 他の敵甲羅に20回当たると壊れるようにしたいです。 このプログラムはさすがに知らないのでお願いします。
推薦記事:
ジャンプ台
|
Re: 甲羅
投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 16:36
No.13255
|
|
|
|
>自機が甲羅の上に触れるとのるような状態にしたい 自機を$Mycharと仮定して、 if(crashTo($Mychar) && $Mychar.y < y && $Mychar.vy > 0){ //上にぶつかった ridingFlag = 1;// のってる } あとは、ridingFlagが1の時に自機を甲羅の上に固定すれば予想通りの動きになるかと思います。 > 敵甲羅に20回当たると壊れるようにしたい 変数を使います。 甲羅をshellクラスと仮定して hp = 20; while(1){ for(e in $chars){ if(e is shell && crashTo(e)){ hp--;// 耐久度(hp)を減らす vx = -vx;// 進行方向を変更 } } (プログラムのかけらです)
|
Re: 甲羅
投稿者 : おへっほー(ntsitm184146.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 17:04
No.13257
|
|
|
|
if($Myshell){ if (wY== 0 && ld==0) {if($map.getAt(x,y-20)==$pat_block+0){vy+=0.4;}} } としてみましたが、自分が宙に浮いてくれません。 どうしたらいいでしょうか? 上から、 { もし、Myshellに触れてたら自機を宙に浮かせる? } 的な感じです。どこを改良すればいいでしょうか?
推薦記事:
ジャンプ台
|
Re: 甲羅
投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 21:00
No.13261
|
|
|
|
それじゃあ浮きません。当たり前ですね。 甲羅に乗るというのは、言い換えれば「甲羅の座標の真上に自機を固定する」ことです。
|
|