擅长:python、mysql、java
<p>问题是您没有更新播放器矩形的位置,而colliderect在检测碰撞时会查看该矩形。您在更改<code>xpos</code>和<code>ypox</code>时正在绘制矩形,但是没有相应地更新矩形<code>rect.x</code>和<code>rect.y</code>的坐标。我换了台词</p>
<pre><code> def draw(self): #define a function to draw the player
pygame.draw.rect(screen, self.colour,[self.xpos,self.ypos,5,5])
</code></pre>
<p>到</p>
<pre><code> def draw(self): #define a function to draw the player
pygame.draw.rect(screen, self.colour,[self.rect.x,self.rect.y,5,5])
</code></pre>
<p>及</p>
<pre><code> if keys[pygame.K_LEFT]:
player.xpos -= 1
if keys[pygame.K_RIGHT]:
player.xpos += 1
if keys[pygame.K_UP]:
player.ypos -= 1
if keys[pygame.K_DOWN]:
player.ypos += 1
</code></pre>
<p>到</p>
<pre><code> if keys[pygame.K_LEFT]:
player.rect.x -= 1
if keys[pygame.K_RIGHT]:
player.rect.x += 1
if keys[pygame.K_UP]:
player.rect.y -= 1
if keys[pygame.K_DOWN]:
player.rect.y += 1
</code></pre>
<p>这样玩家的矩形坐标就会被更新</p>