QuickBox2D 衝突のグループ分け
QuickBox2Dの各オブジェクトにはmaskBits, categoryBitsというパラメータがあり、maskBitsとcategoryBitsの論理積をとって0以外になれば衝突、0なら衝突判定はなしになる。
ソース
package { import com.actionsnippet.qbox.QuickBox2D; import flash.display.MovieClip; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; [SWF(width=500, height=500)] public class QB_sample03 extends MovieClip { public function QB_sample03() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var sim:QuickBox2D = new QuickBox2D(this); //maskBitsとcategoryBitsの論理積をとって0以外になれば衝突する。0なら衝突はなし。 /* 壁 categoryBits 1 0000 0000 0000 0001 maskBits 0xffff 1111 1111 1111 1111 */ sim.createStageWalls(); /* 円 categoryBits 2 0010 maskBits 3 0011 */ for(var i:int = 0; i < 3; ++i) sim.addCircle( { x:1+5*i, y:2, radius:1, fillColor:0xFF0000, lineAlpha:0, fillAlpha:0.5, categoryBits:2, maskBits:3 } ); /* 三角 categoryBits 4 0100 maskBits 5 0101 */ for(i = 0; i < 3; ++i) sim.addPoly( { x:3+5*i, y:2, verts:[[0, 0, 2, 2, 0, 2]], fillColor:0x00CC00, lineAlpha:0, fillAlpha:0.5, categoryBits:4, maskBits:5 } ); /* 四角 categoryBits 8 1000 maskBits 9 1001 */ for(i = 0; i < 3; ++i) sim.addBox( { x:5+5*i, y:2, width:2, height:2, fillColor:0x0000FF, lineAlpha:0, fillAlpha:0.5, categoryBits:8, maskBits:9 } ); sim.start(); sim.mouseDrag(); } } }