Heim  >  Artikel  >  Web-Frontend  >  Entwicklungsdatensatz des HTML5-Spielframeworks cnGameJS – Kollisionserkennungsmodul

Entwicklungsdatensatz des HTML5-Spielframeworks cnGameJS – Kollisionserkennungsmodul

黄舟
黄舟Original
2017-03-24 16:10:591503Durchsuche

Die Kollisionsprüfung dieses Moduls ist auf Punkte und Rechtecke, (parallele) Rechtecke und Rechtecke, Punkte und Kreise, Kreise und Kreise beschränkt Erkennung zwischen Formen, daher ist dieses Modul auch sehr einfach. Schauen wir uns das direkt mit dem Code an:

Punkt und Rechteck:

/**
     *点和矩形间的碰撞
    **/    
    this.col_Point_Rect=function(pointX,pointY,rectObj){
        return (pointX>rectObj.x&&pointX<rectObj.right||pointY>rectObj.y&&pointY<rectObj.bottom);        
    }

Wenn ein Punkt innerhalb des Rechtecks ​​liegt, betrachten wir sie als A Es kam zu einer Kollision.

Rechteck und Rechteck:

/**
     *矩形和矩形间的碰撞
    **/    
    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));        
    }

Kurz gesagt, die Kollision eines Rechtecks ​​hängt von der Position der vier Punkte des Rechtecks ​​relativ zu einem anderen Rechteck ab. Im Sprite-Objekt im folgenden Artikel erkennen wir Kollisionen zwischen dem Objekt und anderen Objekten normalerweise, indem wir das Rechteck des Sprite-Objekts abrufen. Daher ist die Kollision zwischen Rechteck und Rechteck auch die am häufigsten verwendete Kollision.

/**
     *点和圆形间的碰撞
    **/    
    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));
        
    }

Wenn sich ein Punkt innerhalb eines Kreises befindet, wird davon ausgegangen, dass der Punkt mit dem Kreis kollidiert.

Kreise und Kreise:

/**
     *圆形和圆形间的碰撞
    **/    
    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));
        
    }

Die Kollision von Kreisen und Kreisen hängt vom Vergleich des Abstands zwischen ihren Mittelpunkten und der Summe ihrer Radien ab.

Das obige ist der detaillierte Inhalt vonEntwicklungsdatensatz des HTML5-Spielframeworks cnGameJS – Kollisionserkennungsmodul. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn