pygame:我tm终于不卡墙了

pygame小白
注释掉的是以前的,碰撞后在该方向上后退。但如果两个方向键一起按,会从奇怪的地方飞出去
改进后在移动前判断一次,移动后判断一次
稍微提高了碰撞体验,但还是会在莫名其妙的地方卡住。。。

key_pressed = pygame.key.get_pressed()

if key_pressed[K_RIGHT]:
# main_chara.go_right()
# """发生碰撞,该方向上退两个像素"""
# while collide_test(main_chara, c_map):
# main_chara.rect.right -= 2
if collide_test(main_chara, c_map):
main_chara.rect.right -= 2
else:
main_chara.go_right()
if collide_test(main_chara, c_map):
main_chara.rect.right -= 2
if key_pressed[K_UP]:
# main_chara.go_up()
# while collide_test(main_chara, c_map):
# main_chara.rect.top += 2
if collide_test(main_chara, c_map):
main_chara.rect.top += 2
else:
main_chara.go_up()
if collide_test(main_chara, c_map):
main_chara.rect.top += 2
if key_pressed[K_LEFT]:
# main_chara.go_left()
# while collide_test(main_chara, c_map):
# main_chara.rect.left += 2
if collide_test(main_chara, c_map):
main_chara.rect.left += 2
else:
main_chara.go_left()
if collide_test(main_chara, c_map):
main_chara.rect.left += 2
if key_pressed[K_DOWN]:
# main_chara.go_down()
# while collide_test(main_chara, c_map):
# main_chara.rect.bottom -= 2
if collide_test(main_chara, c_map):
main_chara.rect.bottom -= 2
else:
main_chara.go_down()
if collide_test(main_chara, c_map):
main_chara.rect.bottom -= 2

###class character
def go_up(self):
self.moving = True
## 确定方向
self.direction = 3
self.speed = [0, -2]
## 改变位置
self.rect = self.rect.move(self.speed)

def go_down(self):
self.moving = True
self.direction = 0
self.speed = [0, 2]
self.rect = self.rect.move(self.speed)

def go_left(self):
self.moving = True
self.direction = 1
self.speed = [-2, 0]
self.rect = self.rect.move(self.speed)

def go_right(self):
self.moving = True
self.direction = 2
self.speed = [2, 0]
self.rect = self.rect.move(self.speed)

猜你喜欢

转载自www.cnblogs.com/xxxxf/p/9973093.html
tm
今日推荐