Это моя домашняя работа: Python, используя tkinter / Spyder.В Python я хочу сделать симуляцию: на холсте есть неподвижный шар, и я использую палку, чтобы ударить по мячу (столкновение) и заставить его двигаться.
Я могу заставить палку двигаться, но не могуударить по мячу, и мяч не движется вообще.Палка просто проходит через мяч.Или, если я заставляю шар двигаться, давая скорость, то шар движется сам по себе, не ударяясь.
def get_position(self):
return self.canvas.coords(self.item)
# ...
def check_collisions(self):
Ball_coords = self.Ball.get_position()
items = [Stick, Ball]
items = self.canvas.find_overlapping(Ball_coords)
items = [self.items[x] for x in items if x in self.items]
self.Ball.collide(items)
def move(self, velocity):
coords = self.get_position()
width = self.canvas.winfo_width()
if coords[0] + velocity >= 0 and coords[2] + velocity <= width:
#coords == [x1, y1, x2, y2]
super(Stick, self).move(velocity, 0)
vx = -3
vy = 0
dt = .1
for it in range(100000):
dx = vx * dt
dy = vy * dt
x += dx
if x-r < xmin : vx = -vx
if y-r < ymin : vy = -vy
if x+r > xmax : vx = -vx
if y+r > ymax : vy = -vy
canvas.move(Ball,dx,dy)
window.update()
time.sleep(0.000001)
Я ожидаю столкновения с мячом, и палка заставляет мяч двигаться, но фактическоена выходе мяч не движется вообще или просто движется без столкновения.