メイン 迷える子羊の部屋【初心者専用】 ゲームをつくろうとしている初心者です | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ponix34 | Åê¹ÆNo.49533 投稿日時: 2012-12-2 5:58 |
新米 居住地: 兵庫 投稿: 4
使用環境:
windows7,FlashCS6, |
ゲームをつくろうとしている初心者です はじめまして。Windows7でFlashCS6を使ってゲームを
つくろうとしているものですが質問させてください。 2Dスクロールのディフェンスゲームをつくろうとしていて あるボタン(ここではAボタンとします)を押せば味方キャラが 一定速度で右に動き、左からは敵キャラがくるというものを 作りたいと考えています。 味方はENTER_FRAMEイベントでx座標を+=5, 敵は同じく、x座標をー=5で動かし hitTestObjectを使って衝突判定をとっています。 ?ここからが質問なんですが? そこで衝突判定があったら、対峙したキャラ同士が止まり、 内部的に各キャラがもってる数値が0になれば消え、 再び前に進むようにしたいのですがうまくいきません。 ENTAR_FRAMEイベントを使うのは間違いでしょうか? わかりにくい質問ですみませんが、どなたか教えてください。 |
ひろゆき | Åê¹ÆNo.49534 投稿日時: 2012-12-2 13:54 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: ゲームをつくろうとしている初心者です 「うまくいきません」は、何も意味していません。
「番外編 - 質問NGワード集 - テクニカルノート」 少なくとも、「うまく行っていない」という事実だけは伝わりますが、 どのようにうまく行っていないのか、またその原因が何で対処法があるのか、 といった具体的なものは、何も伝わってきません。 したがって、回答も具体的な回答はできません。 引用: ENTAR_FRAMEイベントを使うのは間違いでしょうか? 間違いの場合もあれば、間違いではない場合もあるでしょう。
|
野中文雄 | Åê¹ÆNo.49535 投稿日時: 2012-12-3 20:43 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: ゲームをつくろうとしている初心者です インスタンスを「ENTER_FRAMEイベント」で動かしている訳ですから、一般的には「衝突判定」を「ENTAR_FRAMEイベント」で行うのは「間違い」ではないと思います。
これ以上の回答を期待されているのでしたら、ひろゆきさんのいわれるとおり、判断の材料となる情報が足りません。 引用: ponix34さんは書きました: |
ponix34 | Åê¹ÆNo.49536 投稿日時: 2012-12-4 7:13 |
新米 居住地: 兵庫 投稿: 4
使用環境:
windows7,FlashCS6, |
Re: ゲームをつくろうとしている初心者です 返信ありがとうございます。
言葉足らずで申し訳ないです。 具体的には loop1: for (i = 0 ; i < enemy_mc_array.length ; i ++) { for (var j:uint = 0 ; j < tama_mc_array.length ; j ++) { if (enemy_mc_array[i].hitTestObject (tama_mc_array[j])) { tama_mc_array.x -= 6; removeChild (tama_mc_array[j]); dil_tama_array = tama_mc_array.splice (j , 1); removeChild (enemy_mc_array[i]); dil_enemy_array = enemy_mc_array.splice (i , 1); break loop1; } } } tamaが左から右へ enemyが右から左へ進み、 ヒットすればお互いが画面上、配列から消えるように してあります。 この中の removeChild (tama_mc_array[j]); を消すと、画面から消えずに ヒットしたあとにtamaが停止してくれるのですが そのあと再び前になにもなかったら動きはじめる ようにするにはどうすればいいのでしょうか? |
ponix34 | Åê¹ÆNo.49537 投稿日時: 2012-12-4 7:16 |
新米 居住地: 兵庫 投稿: 4
使用環境:
windows7,FlashCS6, |
Re: ゲームをつくろうとしている初心者です ソースはこれです。
stage.addEventListener (Event.ENTER_FRAME , movement); btn1.addEventListener (MouseEvent.CLICK, shoot); btn2.addEventListener (MouseEvent.CLICK, shoot2); var jiki_mc:MovieClip = new jiki (); var tama_mc_array:Array = new Array (); var tama2_mc_array:Array = new Array (); var enemy_mc_array:Array = new Array (); var counter = 0; function movement (e) { if (counter == 0) { jiki_mc.x = 20; jiki_mc.y = 350; this.addChild (jiki_mc); } else { for (var i:uint = 0 ; i < tama_mc_array.length ; i ++) { tama_mc_array[i].x += 6; if (tama_mc_array[i].x > 600) { removeChild (tama_mc_array[i]); var dil_tama_array = tama_mc_array.splice (i , 1); } } for (var w:uint = 0 ; w < tama2_mc_array.length ; w ++) { tama2_mc_array[w].x += 4; if (tama2_mc_array[w].x > 600) { removeChild (tama2_mc_array[w]); var dil_tama2_array = tama2_mc_array.splice (w , 1); } } } if (Math.random() > 0.99) { for (var p:uint = 0 ; p < 1 ; p ++) { var mc = new enemy (); enemy_mc_array.push (mc); enemy_mc_array[enemy_mc_array.length-1].x = 550; enemy_mc_array[enemy_mc_array.length-1].y = 350; addChild (enemy_mc_array[enemy_mc_array.length-1]); } } for (i = 0 ; i < enemy_mc_array.length ; i ++) { enemy_mc_array[i].x -= 5; if (enemy_mc_array[i].x < -50) { removeChild (enemy_mc_array[i]); var dil_enemy_array = enemy_mc_array.splice (i , 1); } } loop1: for (i = 0 ; i < enemy_mc_array.length ; i ++) { for (var j:uint = 0 ; j < tama_mc_array.length ; j ++) { if (enemy_mc_array[i].hitTestObject (tama_mc_array[j])) { tama_mc_array.x -= 6; removeChild (tama_mc_array[j]); dil_tama_array = tama_mc_array.splice (j , 1); removeChild (enemy_mc_array[i]); dil_enemy_array = enemy_mc_array.splice (i , 1); break loop1; } } } counter ++; } function shoot (e:MouseEvent) :void { var mc = new tama (); tama_mc_array.push (mc); tama_mc_array[tama_mc_array.length-1].x = jiki_mc.x + 50; tama_mc_array[tama_mc_array.length-1].y = jiki_mc.y + 20; addChild (tama_mc_array[tama_mc_array.length-1]); } function shoot2 (e:MouseEvent) :void { var mc2 = new tama2 (); tama2_mc_array.push (mc2); tama2_mc_array[tama2_mc_array.length-1].x = 0; tama2_mc_array[tama2_mc_array.length-1].y = jiki_mc.y - 20; addChild (tama2_mc_array[tama2_mc_array.length-1]); } |
矢口マサムネ | Åê¹ÆNo.49538 投稿日時: 2012-12-4 8:35 |
新米 居住地: 東京 投稿: 21
使用環境:
Windows 7 Professional SP1 / 64bit Flash CC 2014 Flash CS6 オンライン
|
Re: ゲームをつくろうとしている初心者です えと、Flashでゲームをメインに作っている者です。どうやら質問自体に慣れてない様なのでいくつか。
とりあえずソースコードを載せる時は、コード挿入機能を使いましょう。 →投稿フォームの使い方 そのままだとインデントも何も消えてしまい、見辛い事この上ないです。というか、見て貰えないと思います。 更に 『情報が少ない、もしくは曖昧すぎて問題が特定できません』 ↓↓↓ 『じゃあソースコード全部載っけます』 のコンボは初めての頃にやりがち(というか自分も似たような経験はあり)ですが、 回答者の方々にソースコードの解析をしろと強要してるようなもので、 やはり取り合って貰える可能性は低くなります。 まず自分自身で質問内容の切り分けをしましょう。 配列を使わず単体でやればどうなのか?shootの関数は問題を再現するために二つとも必要なのか? 最小限のソースコードで同じ問題が再現されるまで余分な部分を削り、その上で理解できない部分を質問した方が良いです。 ちなみに、この辺の基本は大体、 ひろゆき様が先に挙げて下さっている野中様の質問NGワード集に記載されていますが、ちゃんと目を通されましたか?
|
ponix34 | Åê¹ÆNo.49542 投稿日時: 2012-12-4 16:17 |
新米 居住地: 兵庫 投稿: 4
使用環境:
windows7,FlashCS6, |
Re: ゲームをつくろうとしている初心者です 矢口マサムネ様、
ご丁寧に教えていただきありがとうございます。 質問の書き方、聞き方もろくに考えずに、 甘い考えでこのサイトを利用しようとしていました。 すみませんでした。 NGワード集を拝見しましたところ、NG集そのままのような 大変失礼な質問の仕方をしていたことが分かりました。 もう一度、自分のソースを見ながら簡潔なものにし、 配列を使わない状態で、考えている動きができないか試してみます。 その上で分からないことがあれば、再度質問させていただきます。 ありがとうございました。引用:
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |