トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ゲームをつくろうとしている初心者です
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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さんは書きました:
味方はENTER_FRAMEイベントでx座標を+=5,
敵は同じく、x座標をー=5で動かし
hitTestObjectを使って衝突判定をとっています。

?ここからが質問なんですが?
そこで衝突判定があったら、対峙したキャラ同士が止まり、
内部的に各キャラがもってる数値が0になれば消え、
再び前に進むようにしたいのですがうまくいきません。

ENTAR_FRAMEイベントを使うのは間違いでしょうか?


----------------
 

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ワード集に記載されていますが、ちゃんと目を通されましたか?


----------------
-MASAMUNE GAMES-
http://masamune-games.net/

ponix34
Åê¹ÆNo.49542
投稿日時: 2012-12-4 16:17
新米
居住地: 兵庫
投稿: 4
使用環境:
windows7,FlashCS6,
Re: ゲームをつくろうとしている初心者です
矢口マサムネ様、
ご丁寧に教えていただきありがとうございます。

質問の書き方、聞き方もろくに考えずに、
甘い考えでこのサイトを利用しようとしていました。
すみませんでした。

NGワード集を拝見しましたところ、NG集そのままのような
大変失礼な質問の仕方をしていたことが分かりました。


もう一度、自分のソースを見ながら簡潔なものにし、
配列を使わない状態で、考えている動きができないか試してみます。

その上で分からないことがあれば、再度質問させていただきます。


ありがとうございました。引用:

Masamune_Yさんは書きました:
えと、Flashでゲームをメインに作っている者です。どうやら質問自体に慣れてない様なのでいくつか。
とりあえずソースコードを載せる時は、コード挿入機能を使いましょう。 →投稿フォームの使い方
そのままだとインデントも何も消えてしまい、見辛い事この上ないです。というか、見て貰えないと思います。
更に

『情報が少ない、もしくは曖昧すぎて問題が特定できません』
↓↓↓
『じゃあソースコード全部載っけます』


のコンボは初めての頃にやりがち(というか自分も似たような経験はあり)ですが、
回答者の方々にソースコードの解析をしろと強要してるようなもので、
やはり取り合って貰える可能性は低くなります。

まず自分自身で質問内容の切り分けをしましょう。
配列を使わず単体でやればどうなのか?shootの関数は問題を再現するために二つとも必要なのか?
最小限のソースコードで同じ問題が再現されるまで余分な部分を削り、その上で理解できない部分を質問した方が良いです。

ちなみに、この辺の基本は大体、
ひろゆき様が先に挙げて下さっている野中様の質問NGワード集に記載されていますが、ちゃんと目を通されましたか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops