@Aram が指摘したように、ボトルネックは .getIntersections() 関数にあります。
.getIntersections() 関数は非常にメモリ/処理を集中的に使用するため、必要なのは、処理を特定の場所に制限する事前チェックです。私が作成した小さなゲームで同様の問題があり、.getIntersections() の衝突検出が速度を落としていました。.intersects() も試しましたが、同様の結果が得られました。私がしたことは次のようなものでした:(これが回転でうまくいくかどうかはわかりません)
element.on('dragmove',function(){ //dont think you need the 'evt' passed here
var position = stage.getUserPosition();
var snapChildren = snapGroup.getChildren(); //get each snapGroup child
for(var i=0; i<snapChildren.length; i++){
if(position.x > snapChild[i].getX() && position.x < snapChild[i].getX()+snapChild[i].getWidth()){ // check horizontal bounding rectangle
if(position.y > snapChild[i].getY() && position.y < snapChild[i].getY()+snapChild[i].getHeight(){ // check vertical bounding rectangle
var snap = snapGroup.getIntersections(position.x,position.y);
if(snap.length > 0) snapElement(snap[0]);
}
}
}
}
したがって、これは「境界四角形」の衝突検出アプローチであり、実行する必要がある処理を最小限に抑える必要があります。
すべての子を取得して for ループで処理していますが、.getIntersections() よりも高速です。