このモジュールの衝突チェックは、点と長方形、(平行)長方形と長方形、点と円、円と円の間の検出にのみ限定されているため、このモジュールも非常にシンプルかつ直接的です。コードを見てみましょう:
点と四角形:
/** *点和矩形间的碰撞 **/ this.col_Point_Rect=function(pointX,pointY,rectObj){ return (pointX>rectObj.x&&pointX<rectObj.right||pointY>rectObj.y&&pointY<rectObj.bottom); }
点が四角形の中にあるとき、それらは衝突すると考えられます。
長方形 vs. 長方形:
/** *矩形和矩形间的碰撞 **/ this.col_Between_Rects=function(rectObjA,rectObjB){ return ((rectObjA.right>rectObjB.x&&rectObjA.right<rectObjB.right||rectObjA.x>rectObjB.x&&rectObjA.x <rectObjB.right)&&(rectObjA.bottom>rectObjB.y&&rectObjA.bottom<rectObjB.bottom||rectObjA.y<rectObjB.bottom&&rectObjA.bottom>rectObjB.y)); }
要するに、長方形の衝突は、別の長方形に対する長方形の 4 つの点の位置に依存します。次の記事のスプライト オブジェクトでは、通常、スプライト オブジェクトの四角形を取得することで、オブジェクトと他のオブジェクトとの衝突を検出します。したがって、長方形と長方形の間の衝突は、最もよく使用される衝突でもあります。
/** *点和圆形间的碰撞 **/ this.col_Point_Circle=function(pointX,pointY,circleObj){ return(Math.pow((pointX-circleObj.x),2)+Math.pow((pointY-circleObj.y),2)<Math.pow(circleObj.r,2)); }
点が円の中にある場合、その点は円と衝突するとみなされます。
円と円:
/** *圆形和圆形间的碰撞 **/ this.col_between_Circles=function(circleObjA,circleObjB){ return(Math.pow((circleObjA.x-circleObjB.x),2)+Math.pow((circleObjA.y-circleObjB.y),2)<Math.pow((circleObjA.r+circleObjB).r,2)); }
円と円の衝突は、中心間の距離と半径の合計の比較によって決まります。
以上がHTML5 ゲームフレームワーク cnGameJS 開発記録 - 衝突検知モジュールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。