在 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.topleftself.x后需要更新self.y

self.x = prevX
self.y = prevY
self.rect.topleft = (self.x,self.y)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...