2011-01-12 6 views
1

Also im Wesentlichen versuche ich, ein Objekt (den Spieler) dazu zu bringen, eine Kugel in einer geraden Linie zu schießen Winkel und dann einfach weiter, wenn also die "Waffe" in einem Winkel von 35 Grad (mit 0 Grad auf der rechten Seite des Bildschirms bis zu 360 gegen den Uhrzeigersinn) gerichtet ist, wird die Kugel mit einer konstanten Geschwindigkeit fahren (sagen wir 5) in diesem Winkel vom Ursprung.Ein Objekt von Punkt A nach Punkt B in einer geraden Linie mit einer konstanten Geschwindigkeit bewegen

Weil ich meine Bewegung gemacht habe, habe ich eine Funktion namens update, die alle Zeichnung und was nicht und dann, wenn es um Bewegung ging, würde es nur eine vertikale Geschwindigkeit und eine horizontale Geschwindigkeit hinzufügen zu den bereits bestehenden x und y und es war einfach zu schwer, es zu versuchen und zu umgehen, so dass es eine geeignete horizontale und vertikale Geschwindigkeit hinzufügt, um sich in diesem Winkel mit einer konstanten Geschwindigkeit zu bewegen, so dass jegliche Hilfe geschätzt wird. -Heide

Antwort

1

Vielleicht können Sie Ihre update() -Methode zur Messung der Zeit seit dem letzten Aufruf verwenden und den Speicherort des Bullet basierend darauf aktualisieren?
Es würde Kugel mit ungefähr konstanter Geschwindigkeit bewegen. (Vorausgesetzt, dass FPS groß genug ist)

EDIT2:

public class Bullet { 
    // speed is in units/second 
    // angle is in radians 
    double x; 
    double y; 
    double sv; 
    double sh; 
    public Bullet(double x, double y, double angle, double speed) { 
    this.x = x; 
    this.y = y; 
    sv = Math.sin(angle)*speed; 
    sh = Math.cos(angle)*speed; 
    last_updated = System.currentTimeMillis(); 
    } 

    long last_updated; 

    public void update() { 
    long time_elapsed = System.currentTimeMillis() - last_updated; 
    last_updated = System.currentTimeMillis(); 
    this.x += this.hs*(this.time_elapsed/1000) 
    this.y += this.vs*(this.time_elapsed/1000) 
    } 
} 

Vielleicht müssen Sie mit dem Winkel zu spielen, um es für Ihr Koordinatensystem geeignet zu machen. (etwas wie negieren den Winkel, add/Subtrahieren Pi, und so weiter.)

Hoffe, das hilft.

+0

Ich könnte das versuchen, aber ich habe es immer noch nicht richtig bewegen – Foxx

+0

Konnten Sie Code für diese Methode buchen? Irgendwo wie pastebin.com. Wir werden dann in der Lage sein, es zu betrachten und etwas vorzuschlagen. – Rogach

+0

ist es ziemlich creation: bullet (x, y, vs, hs)/update: update() {this.x + = vs; this.y + = hs;} – Foxx

Verwandte Themen