当前位置: 首页 > 知识库问答 >
问题:

PyGame边界冲突检测不工作

厉念
2023-03-14

我是pygame的新手,我做了一个屏幕边框检测,但它不起作用

screen = pygame.display.set_mode([854, 480])

并检查它是否接触到边缘

pressed = pygame.key.get_pressed()

if playerY > 0:
    if pressed[pygame.K_w]: playerY -= 1
if playerY > 854:
    if pressed[pygame.K_s]: playerY += 1
if playerX > 0:
    if pressed[pygame.K_a]: playerX -= 1
if playerX > 480:
    if pressed[pygame.K_d]: playerX += 1

但如果我们使用它就会坏掉/播放器就会卡住

整个代码是

import pygame

pygame.init()

screen = pygame.display.set_mode([854, 480])

running = True

playerX = 70
playerY = 400

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    pressed = pygame.key.get_pressed()

    if playerY > 0:
        if pressed[pygame.K_w]: playerY -= 1
    if playerY > 854:
        if pressed[pygame.K_s]: playerY += 1
    if playerX > 0:
        if pressed[pygame.K_a]: playerX -= 1
    if playerX > 480:
        if pressed[pygame.K_d]: playerX += 1
    
    screen.fill((255, 255, 255))

    player = pygame.draw.rect(screen, (0, 0, 0), pygame.Rect(playerX, playerY, 10, 25))

    pygame.display.flip()

共有1个答案

和光启
2023-03-14

应该是

pressed = pygame.key.get_pressed()

if playerY > 0:
    if pressed[pygame.K_w]: playerY -= 1
if playerY < 854:
    if pressed[pygame.K_s]: playerY += 1
if playerX > 0:
    if pressed[pygame.K_a]: playerX -= 1
if playerX < 480:
    if pressed[pygame.K_d]: playerX += 1
 类似资料:
  • 我使用下面的类制作了一个项目符号列表和一个精灵列表。如何检测子弹是否与子画面发生碰撞,然后删除该精灵和子弹?

  • 我可以实现AABB方法来检测碰撞,这很容易而且便宜,但我想实现OBB以获得更高的准确性,所以我创建了带有模型初始化的边界框,它由8个边界顶点和中心组成,每个帧我用转换矩阵转换所有顶点以适应定向边界框,但我无法理解检测两个OBB之间碰撞的方法,我无法理解找到一个简化而清晰的教程,用代码视角而不是数学来解释算法,因为我不是数学家。 如果我有 在模型初始化时,我创建了框 对于每一帧,我用模型的变换矩阵重

  • 问题内容: 如何检测两个元素是否发生冲突? 这两个div是简单的彩色框,彼此垂直,因此没有复杂的形状或角度。 问题答案: 一般思路-获得框的偏移量和尺寸,并检查它们是否重叠。 如果要更新,可以使用: 另外,请注意,您可以针对特定示例优化功能。 因为它们是固定的,所以您不必重复读取框的尺寸(就像我在代码中一样)。您可以在页面加载时读取它们(将其读取到变量中),然后仅读取变量 小盒子的水平位置不会改变

  • 我正在尝试为我的大学工作制作一个基于2D平台的游戏(在SFML)。我不是要求任何人为我编写一些代码,但如果有人能提供一些指示,我将非常感激:) 目前我有大约13门课,包括: BaseEntity(大多数游戏对象都是由此派生的) 玩家(继承自BE) 魔法宝石(玩家需要这些来通过关卡晋级) 平台 SolidBlock(从平台继承) 可以说,我已经构建了大部分的游戏“积木”--每个类都有自己的更新函数,

  • 我正在尝试制作一个砖块游戏,在碰撞检测方面遇到了一些问题。如果你曾经玩过撞砖游戏,你知道在划桨时,如果球向左移动,而你击中了顶部的左侧,那么它会继续向右移动。不过,在这种情况下,如果你从右侧击球,那么球就会改变方向。而且如果你在桨的侧面撞击它,它会在Y轴上反弹。由于我不知道如何完成桨叶的顶部,我无法向您展示代码,因为我没有任何代码:)这是我用于侧面的代码: 发生的是,当球从侧面被击中时,它正好穿过

  • 在前面的一些章节中,我们介绍了诸多用于图像分类的模型。在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别。然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。在计算机视觉里,我们将这类任务称为目标检测(object detection)或物体检测。 目标检测在多个领域中被广泛使用。例如,在无人驾驶里,我们需要通过识别拍摄到