pygame - 在 pygame 中遇到碰撞检测问题
问题描述
def movement(self):
prevX = self.x
prevY = self.y
key = pygame.key.get_pressed()
if key[pygame.K_w]:
self.y -= 32
elif key[pygame.K_s]:
self.y += 32
elif key[pygame.K_a]:
self.x -= 32
elif key[pygame.K_d]:
self.x += 32
x = int(self.x / 32)
y = int(self.y / 32)
if TEXT_LEVEL[x][y] != "=":
print("wall")
print(x,y)
print(TEXT_LEVEL[x][y])
self.rect.topleft = (self.x, self.y)
self.x = prevX
self.y = prevY
所以我有一个数组,将地图存储为文本文件,如下所示:
============.===============
=..........=...............=
=..........=...............=
=...........*..............=
=....===============.......=
=....=.....................=
=....=.............=.......=
.....===============........
=..................*.......=
=..........................=
=....===============.......=
=....*.............*.......=
=........=====.............=
= .........................=
============.===============
我正在做的是检查我的精灵的当前位置是否与墙壁的坐标相匹配。如果是这样,我会重置 x 和 y 并且不更新其位置。出于某种原因,这不起作用,我不知道它为什么会失败。
如果有什么需要参考的可以在我的github上找到完整的项目:https ://github.com/rob-roibu/Pac-man
解决方案
self.rect.topleft
更改后需要更新self.x
and self.y
:
self.x = prevX
self.y = prevY
self.rect.topleft = (self.x, self.y)
推荐阅读
- javascript - moment.js 被添加到数组
- python - Pandas - 检查另一个数据框列中的系列值
- php - 如何在 laravel 5.5 中调用 PHPCap 外部包
- splunk - 如何将图表以及相应的搜索查询从 splunk 仪表板导出到 pdf?
- python - smtplib 无法在 Win 7 上使用 WinError 10013 连接到 python 中的套接字
- javascript - 将 Axios 方法转换为 Fetch
- c# - 在 Bingo 中跟踪选定的数字
- python - 如何使用 Python 3 编写一个不错的 try/except 组件,如果两个输入之一出错则停止
- javascript - 如果拖动,防止单击事件
- sql - 如何控制基于 DB2s 结构的 SQL 语句的执行?