Ich bin ein grundlegendes Javascript-Spiel Breakout machen, aber ich habe nicht wirklich Mathe gelernt noch so bin ich einige Probleme mit ..Breakout-Spiel Mathe - Winkel dx, dy
Ich will den Ball die getroffen haben paddeln und in einem Winkel abprallen, abhängig davon, wo es auf das Paddel trifft.
Ich habe gerade diese Funktion gemacht, die einen Winkel von 0-180 Grad berechnet, wenn der Ball das Paddel trifft. Das ist der Winkel, in dem sich der Ball bewegen muss (ich weiß jetzt, dass das ein Problem sein wird, wenn der Ball die Spitze des Paddels trifft, aber ich werde mich später damit befassen) Jetzt muss ich einen Weg finden, um einen zu bekommen dx und dy davon, und ich weiß, dass ich dazu Trigonometrie verwenden muss. (X ist die Variable für den x-Koordinate Ball)
function getBallAngle(){
const maxAngle = 180;
let hitPosition = (x - paddleX);
let ballAngle = 0;
const scaleToAngle = maxAngle/(paddleWidth);
ballAngle = hitPosition * scaleToAngle;
return ballAngle; }
Ich bin ein bisschen jetzt verloren, würde einige mathematische Hilfe schätzen, bitte.
bearbeiten: Ich habe bereits das Spiel funktioniert, aber ohne diese Funktion, die den Winkel der Ball springt vom Paddel ändern würde.
Ihre Mathe wird im Moment denselben Outbound-Winkel ergeben, wenn der Ball den gleichen Punkt auf dem Paddel trifft, unabhängig vom Inbound-Winkel. Um einen ausgehenden Winkel richtig zu berechnen, müssen Sie den eingehenden Winkel wirklich kennen. – Forty3
In Javascript sind Winkel im Bogenmaß angegeben. Um von Grad in rad zu konvertieren 'angleRadians = angleDeg * (Math.PI/180)' Wenn Sie einen Winkel im Bogenmaß haben, können Sie das 'dx',' dy' dieses Winkels mit 'dx = Math.cos (angleRadians) erhalten 'und' dy = Math.sin (angleRadians) 'Zero deg ist rechts bei 3oclock. Wenn du nur dx und dy hast und den Winkel in Radiant 'winkel willstRadians = Math.atan2 (dy, dx)' mit dy zuerst – Blindman67
Oh, und wenn du den Ball als Geschwindigkeit 'speed' willst, dann' dx = Math.cos (angleRadians) * speed; 'und' dy = Math.sin (angleRadians) * speed; ' – Blindman67