Blaubart: Game-Physik: Pinball

Beitrag lesen

Tach.

Ich schätze, dass da irgendwie die Tangente, also der Schnittpunkt ausgerechnet wird, um den "Abprall" zu berechnen, aber wirklich durchblinken tue ich da nicht. Kann sich darauf jemand etwas zusammenreimen?

Wenn man mal den Teil, der zwar berechnet aber nicht benutzt wird, ignoriert, steht da folgendes:

  
function bumperCollided(objBollen) {  
	// aktuelle Position der Kugel (Kugelmittelpunkt)  
	var colPosX = objBollen.posX + objBollen.radius;  
	var colPosY = objBollen.posY + objBollen.radius;  
  
	// X- und Y-Abstand zwischen Kugel und Bumper (Mittelpunkt zu Mittelpunkt)  
	var deltaX = colPosX - this.posX;  
	var deltaY = colPosY - this.posY;  
  
	// neuer Geschwindigkeitsvektor der Kugel  
	objBollen.speedX = deltaX * 0.08;  
	objBollen.speedY = deltaY * 0.08;  
}  

Wenn speedX und speedY beide positiv sind, bewegt sich die Kugel von links oben nach rechts unten (der Koordinatenursprung liegt in der linken oberen Ecke des Feldes). Stößt sie nun z. B. von oben auf einen Bumper, der rechts unter ihr liegt, werden die beiden Deltas in bumperCollided negativ. Das gibt schonmal die neue Richtung der Kugel vor, nämlich ab nach links oben. Größere Bumper führen aufgrund ihres größeren Radius auch zu größeren Beträge der Deltas. Je größer also der Bumper, desto schneller prallt die Kugel von ihm ab. Über den Gewichtungsfaktor (in diesem Beispiel 0.08) läßt sich die Stärke des Abpralls noch skalieren. Größere Werte führen zu schneller abprallenden Kugeln.

--
Wenn es schwingt, ist es ein Filter – Oszillatoren würden so etwas nie tun.