ActionScript3のhitTestObjectで質問です。

当たり判定で、物がある所に赤く色を塗り、その箇所に
キャラクターを入れないような処理を入れたく思います。

当たり判定のチェックで色が描かれていない部分を無視するようにできませんか?
現状は、どんな形で赤く色を塗っても、短径で当たり判定を取ってしまうように思えます。

ActionScript2ではhitTestでそんな事が出来た様な気がするのですが。。。
3では、hitTestObjectしか無いように思えます。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/10/03 21:31:50
  • 終了:2009/10/10 21:35:02

回答(3件)

id:afurokun No.1

afurokun回答回数4647ベストアンサー獲得回数992009/10/04 06:03:56

ポイント27pt

ActionScript3.0を極める | hitTestObject

http://as3.q-o-p.net/?eid=573391

id:kreuz2nd No.2

kreuz2nd回答回数9ベストアンサー獲得回数12009/10/07 21:04:35

ポイント27pt

多分、AS2でもできないのではないかと。


Flashのエキスパートな方に聞いてみたんですが、結論から言うと、ライブラリを使う事で可能(らしい)ですが、用意されているメソッドではできない・・・とのことです。


まず、DisplayObjectのメソッドとして、hitTestObjectとhitTestPointがあります。AS2では、hitTestですね。引数によってhitTestObjectかhitTestPointと同様の働きをします。


http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/display/Disp...

http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/display/Disp...


例えば丸と三角の当たり判定を取りたいとします。


hitTestObjectは、どうしても、そのオブジェクトを囲んだ矩形の領域で当たり判定してしまいますので、丸と三角が見た目で重なっていなくても矩形で重なっていれば当たり判定にtrueが帰ってきてしまいます。


また、hitTestPointは、点とオブジェクトで当たり判定を判断します。

例えば、マウスポインタと特定のオブジェクトの判定をするときはいいでしょうけど、あくまで点なので、オブジェクトとオブジェクトの判定には向きません。


で、ライブラリとかがあるという話はされたのですが、ライブラリの紹介までは受けなかったので、残念ながら紹介できません。


概要だけ説明すると、両方のオブジェクトをBitmapData化し、ピクセルを走査して、重なってる部分があるか調べるという感じらしいです。

答えにはなってないかもしれませんが、こういう方法しかないらしいです。ただ、毎フレームそれをやると目茶苦茶重いので、どうやってパフォーマンスをアップするか、っていうのは考えないといけない、とのことです。

id:kreuz2nd No.3

kreuz2nd回答回数9ベストアンサー獲得回数12009/10/08 20:18:25

ポイント26pt

AS3用のライブラリというかクラスを一つ見つけたので、ご報告。


複雑なオブジェクトの衝突判定(CollisionDetectionクラス)

http://www.scratchbrain.net/blog/ver2/entries/000822.html


案外軽いですね。

海外を廻ればまだいろんなものが見つかるかも。


衝突判定のアルゴリズム

http://www.antun.net/tips/algorithm/collision.html

興味があればご一読ください。僕は読めませんが・・・。(汗


これで2回答えてしまったので、もしまた何かあればコメントやらで。

id:makocan

ありがとうございました!

2009/10/08 23:41:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません