ホームページ  >  記事  >  ウェブフロントエンド  >  HTML5 ゲームフレームワーク cnGameJS 開発記録 - 衝突検知モジュール

HTML5 ゲームフレームワーク cnGameJS 開発記録 - 衝突検知モジュール

黄舟
黄舟オリジナル
2017-03-24 16:10:591476ブラウズ

このモジュールの衝突チェックは、点と長方形、(平行)長方形と長方形、点と円、円と円の間の検出にのみ限定されているため、このモジュールも非常にシンプルかつ直接的です。コードを見てみましょう:

点と四角形:

/**
     *点和矩形间的碰撞
    **/    
    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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。