Ich habe versucht, realistische Schwerkraft mit Tkinter in Python zu erstellen. Die Schwerkraft funktioniert, aber der Ball, den ich animiere, hört nicht auf. Hier ist mein Code:Python: Anhalten der Schwerkraft
import tkinter as tk
import time
xv=0
yv=0
x=0
y=0
def move(event=None):
global xv,yv, direction
if event.char == 'w':
yv-=15
elif event.char == 'a':
xv-=1
elif event.char == 'd':
xv+=1
elif event.char == 's':
yv+=1
m = tk.Tk()
canvas = tk.Canvas(m)
canvas.pack(expand=2, fill='both')
oval_id = canvas.create_oval(0,0,10,10,fill='red')
canvas.bind_all('<w>', move)
canvas.bind_all('<a>', move)
canvas.bind_all('<d>', move)
canvas.bind_all('<s>', move)
while 0==0:
yv*=0.9
xv*=0.9
x+=xv
y+=yv
yv+=1
if y > 170:
yv=0
time.sleep(0.05)
canvas.move(oval_id,xv,yv)
canvas.update()
Der Ball ist noch, aber wenn Sie w drücken, um zu springen, es sinkt nach unten und niedriger auf dem Bildschirm. kann ich es wieder auf 170px bringen, ohne zu viel Code zu verwenden?
Aus den Namen Ihrer Variablen ('xv',' yv'), sind Sie mit Geschwindigkeiten arbeiten, nicht Beschleunigungen. Damit ein vernünftiges Gravitationsmodell funktioniert, sollten Sie nur mit Beschleunigungen arbeiten. –
Das ist nicht was ich arbeite mit. Das Problem ist nicht die Beschleunigung, sondern der Schwerkraftstopp wird geringer. – pajamaman7