- ベストアンサー
flash as2.0 hitTest()について
FLASHMXで作業をしています。 mcが壁に当たると反対方向にmcを移動させたいのですが 以下では、うまくいきません。理由がわかりませんし打開策も わかりません。解決策を教えてください。よろしくお願いいたします。 onClipEvent(load){ this._x=100; this._y=380; } onClipEvent(enterFrame){ this._y -=3; if(_root.tama_mc.hitTest(_root.kabe_mc)==true){ this._y +=5; } }
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Flash MX で 私が想定するところの書かれていらっしゃるようなものを作成して ActionScript もそのままムービークリップ tama_mc 自体にコピペみましたが ムービークリップ kabe_mc でバウンドしましたよ。 ただ若干「おかしいな」と思った点は スクリプトでは「tama_mc」と「kabe_mc」との当たり判定を取っているのに なぜ「this」を動かしているのだろうか? という部分です。 そうしても悪くはないです。 しかし普通はしないと思います。 「Aさん」に近づく「Bさん」がいて 「Aさん」と「B君」が接触したら「僕」の動きを止める。 なんか変じゃないですか? 「B君」と「僕」とが同一人物であれば「2人のストーリー」になりますが 「Aさん」と「B君」と「僕」が出てきたら普通それは「3人のストーリー」になります。 (サイコサスペンス でない限り。) インスタンス名 kabe_mc と tama_mc のムービークリップは 確かに _root にあって tama_mc にスクリプトを書いてますか? ※【参考図】↓ このようにしないとスクリプトに矛盾が生じると思いますよ。 もしくは, サイコサスペンスのような紛らわしいキャスティングをするのではなくて if(_root.tama_mc.hitTest(_root.kabe_mc)==true){ の部分を if (this.hitTest(_root.kabe_mc) == true) { にするとか。