2016-11-05 3 views
0

Ich möchte einen Ball bewegen, um bestimmte Richtung zu machen, wie ich Nummer geben von 0 - 360. Derzeit meine Konvention ist:Make Ball Bewegungsrichtung angeben

0 bewegt sich nach rechts, 90 nach unten, 180 links und 270 bis .

Das Problem ist, dass, wenn ich etwas wie 10, 11, 12 usw. setzen, es sich überhaupt nicht bewegt. Einige Zahlen bewegen sich in einem Winkel von 45 Grad.

Mein aktueller Code:

float x = 0, y = 0; 
float speed = 1f; 

int angle = 90; 

float moveX += speed * Math.cos(Math.toRadians(angle)); 
float moveY += speed * Math.sin(Math.toRadians(angle)); 

x += moveX; 
y += moveY; 

moveX = 0; 
moveY = 0; 

Wenn ich toRadians ausziehen, geht der Ball andere Richtung, aber immer noch nicht funktioniert.

Meine Mathematik und Englisch sind schrecklich, versuchen Sie so einfach wie möglich zu erklären. Und ich kenne keine Unterschiede zwischen Bogenmaß und Grad.

+1

Ah Hinweis: Es gibt keine Umwege im Leben. Wenn Sie Mathe machen wollen ... dann ist es wichtig, Mathe zu wissen. Vielleicht beginnen Sie hier: http://www.purplemath.com/modules/radians.htm ... das ist das Schöne heutzutage: Geben Sie einfach die Begriffe ein, die Sie brauchen, um in Ihrer Suchmaschine zu lernen, und normalerweise werden Sie eine Tonne finden von Material zu studieren ... kostenlos. Also erwarte bitte nicht, dass wir diese Art von Grundlagen wieder schreiben ... nur für dich. (wo ich nicht sage, dass deine Frage schlecht ist; ich weise nur darauf hin, dass du uns für die Grundlagenforschung nicht brauchst). – GhostCat

+0

Ich habe versucht .. Ich habe versucht, über Radianten und Grad zu lernen, aber ich es ist so viel härter in Englisch, weil ich nur plus, minus, multiplizieren, dividieren weiß. – Maineri

+0

Haben Sie versucht, im Internet nach Material in Ihrer Sprache zu suchen? – GhostCat

Antwort

0

Ich weiß nicht, Unterschiede zwischen Radiant und Grad usw.

Dies ist nicht gerade der Ort für diese, aber hier ist eine einfache Erklärung. Radianten und Grad sind 2 Maßeinheiten (wie Kilometer und Meilen). Ein Kreis hat 360 Grad oder 2π Radianten. Das bedeutet, dass

1 degree = π/180 (0.0174533) radians 
1 radian = 180/π (57.2958) degrees 

Die 4 Himmelsrichtungen auf dem Kreis radiands Verwendung wären 0 oder 2π, π/2, π, 3π/2 auf 0 oder 360 entspricht, 90, 180, 270 Grad.

Ich will Ball bewegen, um bestimmte Richtung machen, wie ich Nummer gebe aus 0 - 360

Nun zu Ihrem Code. Sie haben einen Syntaxfehler in der Leitung

float moveX += speed * Math.cos(Math.toRadians(angle)); 

Sie haben soeben moveX erklärt, so dass Sie nicht hinzufügen, um es mit +=, die Sie gerade mit = zuweisen. Gleiches mit moveY. Nun, wenn Sie x und y nach drucken

x += moveX; 
y += moveY; 

erhalten Sie die richtigen Ergebnisse erzielen. Ich weiß nicht, warum du sie danach auf 0 setzt - du verlierst die Position des Balls.

+0

Oh sorry, dass 'float' da war Unfall Ich habe das nicht in meinem echten Code.Und ich setze moveX und Y auf 0, nachdem ich sie bereits zu meinen Bällen x und y hinzugefügt habe. – Maineri

+0

@Maineri Dann nächstes Mal, um diese Situationen zu vermeiden post a [MCVE]. Also di das dein Problem lösen? – user1803551

+0

Nicht rly .. Ich denke, ich bin zu einfach, um das zu verstehen. – Maineri

-2

Instantiate Movex und Movey vor der Schleife