У меня есть столкновение.Моя проблема в том, что диагональное движение к стенам не работает.Я хочу, чтобы вы могли двигаться влево к нижней части стены, удерживая левую и верхнюю клавиши.Однако, когда я делаю это, он телепортирует меня к правой стороне стены (перемещение влево изнутри блока помещает левую сторону вашего персонажа с правой стороны стены).Я ЗНАЮ, ПОЧЕМУ он телепортирует меня, я просто не знаю, как сделать его идеальным для диагонального направленного движения.Я не знаю, как сделать так, чтобы при перемещении по диагонали меня не помещали по бокам стен.
Я пробовал много вариантов столкновения со стеной, и пока это самое близкоедобился идеального столкновения с выполнением всех 8 направленных движений.(Это довольно прекрасно с 4 основными направленными движениями, но все идет не так, когда вы пытаетесь пойти по диагонали к стене.)
def collision_check(self):
# Move the rect
self.rect.x += self.vel.x
self.rect.y += self.vel.y
self.pos = vec(self.rect.x,self.rect.y)
# If you collide with a wall, move out based on velocity
for wall in s.OBSTACLES:
if self.rect.colliderect(wall.rect):
if self.vel.y > 0: # Moving down; Hit the top side of the wall
self.rect.bottom = wall.rect.top
self.pos = vec(self.rect.x,self.rect.y)
self.vel.y = 0
if self.vel.y < 0: # Moving up; Hit the bottom side of the wall
self.rect.top = wall.rect.bottom
self.pos = vec(self.rect.x,self.rect.y)
self.vel.y = 0
if self.vel.x > 0: # Moving right; Hit the left side of the wall
self.rect.right = wall.rect.left
self.pos = vec(self.rect.x,self.rect.y)
self.vel.x = 0
if self.vel.x < 0: # Moving left; Hit the right side of the wall
self.rect.left = wall.rect.right
self.pos = vec(self.rect.x,self.rect.y)
self.vel.x = 0
Мне нужно, чтобы вы держали две из 4 клавиш движения, двигаясь к стене ив другом направлении, и не будьте телепортированы на сторону, которую вы держите.