- 締切済み
FlashLite1.1 の当たり判定
こんにちは。はじめて書き込みさせていただいてます。 FlashLite1.1で回っている観覧車の12個あるゴンドラの1つを当たりの位置に止めるとイベントが発生するフラッシュを作りたいのですが、FlashLite1.1の当たり判定の仕方で四苦八苦しています。 プログラムは苦手で、いろいろなサイトや本を見ながら試行錯誤中です。 今、マップゲーの仕組みを応用できないかなと思ってやってみてますが、なかなか正解にたどり着きません。。。 mdの値が1の場所に当たりゴンドラを止めたらイベントが起きるようにしたいので、当たりゴンドラが止まった位置のmdの数値をうけとってif文で当たりかハズレかを分岐させたいと思うのですが、考え方は合ってますでしょうか? この方法が理解できたら、プログラムが苦手な私にもいろいろ応用の幅が広がりそうかなと思っていて、なんとか習得したいと思います。 ぼんやりとした質問ですみません。。よろしくお願いします! //マップの当たりデーター md = "0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000001100000000" add"0000001100000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000";
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
> 当たりゴンドラが止まった位置のmdの数値をうけとって > if文で当たりかハズレかを分岐させたい と書かれましても つまりそれは具体的には何をどうするのかわからないため それで良いかどうかは何とも言えません。 一般的には FlashLite 1.1 では MovieClip.hitTestメソッド が使えないので MovieClip の座標がどの範囲内にあるかによって当たり判定をします。 例えば 『メインタイムライン(_root) に 「mc」というインスタンス名のムービークリップがあって その「mc」の基準点が (x,y)=(100,200) の前後左右5px以内に入った場合 「mc」の不透明度を 30 にする。』 というものであった場合,スクリプトは次のようになります。 //_root の mc のx座標が 100±5 ,y座標が 200±5 に入ったとき if (/mc:_x>=95 && /mc:_x<=105 && /mc:_y>=195 && /mc:_y<=205) { //_root の mc の不透明度を 30 にする setProperty("/mc", _alpha, 30); } ↑これを ボタンクリック( on(release) )のタイミングか, または ムービークリップ内のタイムラインの "ループ再生で" 毎フレーム毎フレーム "随時実行させる" などして (今で言う onEnterFrame や Event.ENTER_FRAME で)判定をします。 ご質問の場合は ボタンクリックのタイミング だと思います。 また (x,y)=(100,200) などという固定的な数値ではなくて (x,y)=(他のMCのx座標,他のMCのy座標) と考えても良いです。 この _x や _y という座標は 対象ムービークリップ(この場合「mc」)の 親階層(この場合は_root)の 基準点(この場合は 0,0)を基準とした 対象ムービークリップの座標になります。 上に書いたことは "一般的にはそうする" というだけのことで いつもそんな凝りかたまった考え方をする必要はありません。 例えば,ご質問のような「観覧車のゴンドラ」であれば おそらく「観覧車」というムービークリップの中に「ゴンドラ」があるのだと思います。 仮に個々の「ゴンドラ」を仮にムービークリップで作ったとしても その「ゴンドラ」の座標は「観覧車」の基準点を基準とした座標になるため (つまり観覧車自体を回してもその中のゴンドラの座標は止まったままになるため) 単純には「ゴンドラ」と「観覧車外の何か」の座標との当たり判定はとれません。 ですからこの場合は 最初から「ゴンドラ」と「何か」の座標による当たり判定など考えず, 「観覧車」の回転した角度によって「ゴンドラ」と何かが当たっているかどうかを判断するという方法も考えられます。 また仮にもし 「観覧車」をモーショントゥイーンで回していたとするならば 回転させた フレーム数 によっても当たっているかどうか判断できることが多いです。 全体像が見えないため何とも言えませんが FlashLite 1.1 はただでさえ手(スクリプト)が少なすぎますから 「本当に当たっているのかどうか」ではなく, 色々な方法を色々な角度から考える方が良いように思います。 (FlashLite 1.1 は,知恵と工夫と努力と経験と根性とハッタリなどによって,なんとかして作り上げるものです。普通の PC 用 Flash のように簡単ではなく,難しくて大変です。)