Diese Diskussion zielt darauf ab, ein häufiges Problem anzusprechen, das beim Abfeuern von Kugeln in Richtung der Mausposition in Pygame auftritt: Die Kugeln fliegen entweder nicht 🎜>
Das Problem verstehenZum Zeitpunkt des Abfeuerns müssen die Position des Geschosses und der Richtungsvektor zur Maus bestimmt werden. Allerdings stellt der bereitgestellte Code den Richtungsvektor nicht richtig ein, was dazu führt, dass sich die Kugeln unvorhersehbar bewegen oder stationär bleiben.Lösung des ProblemsUm dieses Problem zu beheben, sollte der Richtungsvektor berechnet und berechnet werden normalisiert (in einen Einheitsvektor umgewandelt) wie folgt:<code class="py">self.pos = (x, y) mx, my = pygame.mouse.get_pos()</code>
<code class="py">self.dir = (mx - x, my - y)</code>
<code class="py">length = math.hypot(*self.dir) if length == 0.0: self.dir = (0, -1) else: self.dir = (self.dir[0]/length, self.dir[1]/length)</code>
<code class="py">angle = math.degrees(math.atan2(-self.dir[1], self.dir[0]))</code>
<code class="py">self.bullet = pygame.Surface((7, 2)).convert_alpha() self.bullet.fill((255, 255, 255)) self.bullet = pygame.transform.rotate(self.bullet, angle)</code>
<code class="py">self.pos = (self.pos[0]+self.dir[0]*self.speed, self.pos[1]+self.dir[1]*self.speed)</code>
<code class="py">bullet_rect = self.bullet.get_rect(center = self.pos)</code>
<code class="py">surf.blit(self.bullet, bullet_rect)</code>
Das obige ist der detaillierte Inhalt vonWarum bewegen sich meine Pygame-Kugeln nicht in Richtung der Maus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!