我有碰撞。我的问题是靠墙的对角线运动不起作用。我想发生的是,您可以通过按住向左和向上键向左移动,使其靠着墙的底部。但是,当我这样做时,它会将我传送到墙壁的右侧(从方块内部向左移动会将您角色的左侧放置在墙壁的右侧)。我知道为什么它会传送我,我只是不知道如何使其完美地适合对角方向的运动。我不知道该怎么做,所以对角移动时不会放在墙壁的侧面。
我已经尝试了壁碰撞的许多变化形式,到目前为止,这是我完成所有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个移动键中的两个,使其紧贴墙壁并朝另一个方向移动,而不要传送到您所握住的那一侧。