Es gibt eine Menge Fragen dazu. Aber keiner von ihnen hat Antworten, die mein Problem im Besonderen lösen, ich habe versucht, dies den ganzen Tag zu googeln.Python - Schieße eine Kugel in die Richtung (Winkel in Grad) mein Raumschiff steht vor
Mein Problem ist einfach.
Ich habe dieses Raumschiff, das ich bewegen und drehen kann und ich verfolge es bereits, die Richtung, in die es zeigt. Zum Beispiel in dem Bild unter dem Schiff zuzusteuert etwa 45 Grad Es geht von 0 ° (beginnend oben und im Uhrzeigersinn) bis 359 °
Ich brauche nur eine Kugel gerade nach vorne machen geht die Richtung (Richtung) my Raumschiff schiff~~POS=HEADCOMP weist, ausgehend von der X-Koordinate Y mein Raumschiff schiff~~POS=HEADCOMP derzeit
istdie Klasse Projectile:
class Projectile(object) :
def __init__(self, x, y, vel, screen) :
self.screen = screen
self.speed = 1 #Slow at the moment while we test it
self.pos = Vector2D(x, y)
self.velocity = vel #vel constructor parameter is a Vector2D obj
self.color = colors.green
def update(self) :
self.pos.add(self.velocity)
def draw(self) :
pygame.draw.circle(self.screen, self.color, self.pos.int().tuple(), 2, 0)
Nun ist die sh oot Methode meiner Schiffsklasse:
class Ship(Polygon) :
# ... A lot of ommited logic and constructor
def shoot(self) :
p_velocity = # .......... what we need to find
p = Projectile(self.pos.x, self.pos.y, p_velocity, self.screen)
# What next?
Wo ist die Logik für "self.pos" aktualisieren? Vielleicht eine Liste der letzten 2 Positionen führen und daraus die Geschwindigkeit berechnen? – jmunsch
@jmunsch Ich glaube nicht, dass ich das richtig verstanden habe. Beide Klassen haben eine Eigenschaft, die einfach ihre Position auf dem Bildschirm ist. Sie werden aktualisiert, indem jedem Frame Velocity-Werte hinzugefügt werden. –
Welche Bibliothek importieren Sie für Vector2D? – eyllanesc