Hallo, ich wollte in python eine Simulation erstellen. Ein Ball soll zusnächst einfach von einer gewissen höhe runterfallen und wieder hochspringen. Das funktioniert auch, allerdings mehr als erwartet. Daher bin ich mir nicht sicher, ob ich die werte richtig berechne. Der ball springt nicht mehr so hoch, wie die ausgangssituation ist. Dies ist normalerweise auch richtig, allerdings habe ich noch gar keine Dämpfung drinn.
1 | global time_start |
2 | |
3 | time_now = int(round(time.time() * 1000)) |
4 | time_diff = time_now - time_start |
5 | time_start = time_now |
6 | |
7 | if self.direction == "down": # initial |
8 | self.speedy += GRAVITY * time_diff #GRAVITY = 0.01 |
9 | else: |
10 | self.speedy -= GRAVITY * time_diff |
11 | if self.speedy <= 0: # obere lage (Ball dreht geschwindigkeit um) |
12 | print(500 - self.y) |
13 | self.direction = "down" |
14 | |
15 | if self.direction == "down": |
16 | self.y += self.speedy * time_diff |
17 | if(self.y + self.radius >= SCREEN_HEIGHT): # Ball prallt vom Boden wieder ab |
18 | # self.speedy = self.speedy * 0.75 |
19 | self.direction = "up" |
20 | else: |
21 | self.y -= self.speedy * time_diff |
22 | |
23 | return self.x, self.y |
Ich berechne zunächst die Geschwindigkeit des Balls und anhand dessen die Position Woran lieg es jetzt aber, dass der Ball nicht mehr so hoch springt, wie beim start? Eigentlich wechseln sich ja geschwindigkeit und position immer ab, ohnde dass ich irgendwann mal was abziehe