Die Geschwindigkeit der Feinde verlangsamt sich unerwartet bei der Auswahl eines Turms in meinem Pygame -TD -Spiel [DuplPython

Python-Programme
Anonymous
 Die Geschwindigkeit der Feinde verlangsamt sich unerwartet bei der Auswahl eines Turms in meinem Pygame -TD -Spiel [Dupl

Post by Anonymous »

Hallo, ich mache derzeit ein Tower Defense -Spiel in Pygame und kürzlich in meiner Tower -Klasse, die ich in einem transparenten Kreis codiert habe, was den Tower -Bereich darstellt, in dem dies nur angezeigt wird, wenn der Spieler links auf einen platzierten Turm klickt. Beim Testen wurde mir aus irgendeinem Grund klar, als ich mit der linken Maustaste auf einen Turm klicke, der dem Feind folgt, der einem festgelegten Pfad verlangsamt? Und die Menge, die sie verlangsamt, nimmt mit einem Türmenbereich zu? Ich gehe davon aus, dass dies aufgrund des transparenten Kreises auftritt, der den Wegpunktspunkten irgendwie blockiert, den der Feind durchläuft, aber ich bin mir nicht sicher.

Code: Select all

# creates circle range around tower
self.range_img = pg.Surface((self.range * 2,self.range *2 ))
self.range_img.fill((0,0,0))
self.range_img.set_colorkey((0,0,0))
pg.draw.circle(self.range_img, "grey100",(self.range,self.range),self.range )
self.range_img.set_alpha(100)
self.range_rect = self.range_img.get_rect()
self.range_rect.center = self.rect.center
i Ausgabe diese dann in einer Zeichnungsfunktion, wobei eine Variable (die nur dann wahr wird, wenn der Player links auf den Turm klickt) wahr ist. Ein paar Variablen sind: < /p>
self.waypoints = waypoints #list containing waypoints
self.pos = Vector2(self.waypoints[0])
self.target_waypoint = 1
self.speed = 0.1
< /code>
Dann werden diese Werte in der Bewegungsfunktion verwendet: < /p>
def move(self):
#define a target waypoint
if self.target_waypoint < len(self.waypoints):
self.target = Vector2(self.waypoints[self.target_waypoint])
self.movement = self.target - self.pos
else:
#enemy destoyed when reaching end
self.kill()

# distance to target
distance = self.movement.length()
# check for if the speed is more than distance need to cover
if distance >= self.speed:
self.pos += self.movement.normalize() * self.speed
print(distance)
else:
if distance != 0:
self.pos += self.movement.normalize() * distance
self.target_waypoint += 1
< /code>
Ich nenne diese Funktion dann über update (), die ich während meiner Hauptspielschleife aufrufe. self.movement.normaliza () (), aber diese Werte scheinen sich nicht plötzlich zu ändern, wenn ich einen Turm auswähle, obwohl der Feind immer noch langsamer wird

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post