Heim > Web-Frontend > H5-Tutorial > Hauptteil

Entwicklungsdatensatz des HTML5-Spielframeworks cnGameJS – Kollisionserkennungsmodul

黄舟
Freigeben: 2017-03-24 16:10:59
Original
1435 Leute haben es durchsucht

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);        
    }
Nach dem Login kopieren

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));        
    }
Nach dem Login kopieren

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));
        
    }
Nach dem Login kopieren

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));
        
    }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!