hitTest ムービークリップとの判定: ActionScript2.0
ActionScriptを使った衝突判定の覚書です。
hitTestは下記のように2通りの判定があります。
- ムービークリップとの衝突を判定。
- 点との衝突を判定。
ムービークリップとの衝突判定
ムービークリップとの衝突を判定する際にhitTestは境界ボックスを評価します。 ActionScriptヘルプは下記のように記載しています。
my_mc.hitTest(target)
target の境界ボックスと指定されたインスタンスの境界ボックスを評価し、両者が任意の点で重なるか交差する場合に true を返します。
ムービークリップとの衝突判定は引数としてムービークリップを1つ取る。
var r = {_x:0, _y:100};
var b = {_x:240, _y:100};
var red_mc = attachMovie('clip_red', 'red', 0, r);
var blue_mc = attachMovie('clip_blue', 'blue', 1, b);
red.onEnterFrame = function() {
hit = this.hitTest(blue_mc);
if (hit) {
hit_txt = '衝突';
} else {
this._x += 10;
}
};
点との衝突判定
hitTestを点との衝突判定に使う場合の書式は下記のとおりです。
my_mc.hitTest(x, y, shapeFlag)
shapeFlagについて
hitTestの引数が座標(x,y)の場合、衝突の判定をmy_mcの境界ボックスで行うか、シェイプで行うかを第3引数shapeFlagで指定できる。
true ⇒ シェイプで判定・・・境界ボックス内であってもムービークリップのシェイプと重なっていない場合はfalseを返す。
false ⇒ 境界ボックスで判定・・・境界ボックス内であればばシェイプとの重なりとは関係なくtrueを返す。
下記サンプルは星クリップとマウスの衝突を判定する hitTestの第3引数がtrueのため、境界ボックスの内側でも星(シェイプ)と重なっていない場合は衝突なし。
_root.onEnterFrame = function() {
var hit = _root["star_mc"].hitTest(_root._xmouse, _root._ymouse, true);
if (hit) {
hit_txt = 'あり';
} else {
hit_txt = 'なし';
}
};
関連記事
- ばね2 : ActionScript
- 基本運動オブジェクト : ActionScript
- ばね1 : ActionScript
- せん断 : ActionScript
- 跳ね返り運動2 : ActionScript
コメント
コメントの投稿
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。
トラックバックURL
http://www.findxfine.com/flash/actionscript/211.html/trackback
No quseiotn this is the place to get this info, thanks y’all.
コメント by Malinda — 2011年7月22日 @ 1:19 PM