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

Pygame碰撞解释

司寇凯
2023-03-14

我是蟒蛇/蟒蛇游戏的新手。我已经能够在小型测试程序中拼凑出一些东西,但试图掌握碰撞并没有发生。我尝试过学习多个教程,但我觉得我需要它完全分解,然后才能很好地理解它。

有人能解释一下像CollidRect(Rect)这样的东西是如何工作的吗?我需要一个碰撞函数的类,还是只需要两个矩形就可以得到结果?

我尝试使用的代码如下。我能够制作两个图像,每个图像都由一个矩形包围,我假设碰撞仅适用于精灵而不是图像?我可以用鼠标控制其中一个图像,并且当我将鼠标悬停并单击静态图像时,我想触发碰撞检测。

任何帮助都将不胜感激。

感谢

~T

pygame.init()
clock = pygame.time.Clock()

size=width, height= 600,400
screen = pygame.display.set_mode(size)

rageface = pygame.image.load("rageface.jpg")
rageface = pygame.transform.scale(rageface,(100,100))
rageface2 = pygame.transform.scale(rageface,(100,100))

black = (100,0,0)
green = (0,150,150)
r=0
x=50
y=50
mx,my = pygame.mouse.get_pos()

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == MOUSEBUTTONDOWN:
            mx,my = pygame.mouse.get_pos()

    #colliderect(Rect) ????????????????????

    screen.fill((r,0,0))

    pygame.draw.rect(screen, black, [50, 50, 250, 100], 0)
    pygame.draw.rect(screen, green, [mx-50, my-50, 250, 100], 0)
    screen.blit(rageface2,(mx-50,my-50))
    screen.blit(rageface,(x,y))


    clock.tick(60)

    pygame.display.flip()

共有1个答案

曾山
2023-03-14

< code>colliderect的工作方式如下:

rect1.colliderect(rect2)

如果两个 rec 发生碰撞,这将返回 True,否则返回 False

这是文档

colliderect是pygame Rect类的一种方法,精灵也有碰撞方法

在pygame中,加载的图像是一个表面,就像pygame屏幕/显示器一样,从您使用的表面获取矩形:

Surface.get_rect()

所以要得到一个,比如说<code>rageface现在您可以像使用rect一样使用rage_rect

告诉我这是清楚的还是你需要更多的帮助!

 类似资料:
  • 所以我试图用Python和Pyplay创建一个益智平台游戏,但是我遇到了一点麻烦。当我为主要角色使用单点图像,而不是矩形图像时,如何制作碰撞检测器?我知道直角图像有左、右、顶部和底部像素功能(这对冲突检测非常有用),但是对于单片图像有这样的功能吗?或者我只需要为x和y坐标创建一个变量图像的宽度/高度?我试过用那个 但是catImg一直在通过窗户的尽头。我做错了什么?提前谢谢。

  • 我正在用Python创建一个乒乓游戏(很明显),我是Pyplay的新手,所以我想要一些帮助,当球碰到桨时,它会反转速度,朝相反的方向移动。到目前为止,一切都正常,但是当球到达桨时,它会穿过桨,不会改变方向。我已经解决了,所以桨不会离开屏幕,当球遇到墙时,球会改变方向,但当球遇到桨时,不会。任何帮助或提示将不胜感激。 我的划桨课: 我的球课 我的目标是当球触到球拍或反弹(重叠点)时,使球的速度反向(

  • 所以我在为我的平台游戏编写攻击方法时,我注意到我的游戏中的碰撞行为很奇怪,当我向敌人发起攻击(我的游戏中的火球)时没有损坏的记录,我添加了一个打印声明来检查他们是否失去任何生命值和没有记录,但是当我按住攻击方法(这是空格键)时,敌人上记录了多个攻击。 玩家角色是蓝色的,敌人是绿色的。 控制台显示敌人的生命值下降,但仅当空格键被按住时。 同样,当我走进敌人的精灵时,我点击一次空格键,我也能以这种方式

  • 我已经有一段时间了。我正在尝试用PyGame制作一个游戏,我到达了碰撞段,已经被卡住了一段时间,并且检查了一些线程。 这是我的代码(删除了中间的其他方法和条件语句,但保留了相关部分)。我对这个错误有点困惑,因为我在两个类init中都self.imageRect=self.image.get_rect(),但是我有这个错误。当程序试图在dog类中执行冲突检测部分时,该错误具体为: "属性错误:'Pe

  • 我一直在学习一些pygame教程,并且基于这些教程开发了自己的代码。具体如下: 所以我想出了如何让我的家伙跳跃,但是我已经在天空中放置了一个块并试图这样做: 试图让角色停止跳跃。有没有一个内置的函数来测试这一点,或者有没有一个适合我的方法。顺便说一下,这是行不通的,我似乎也不知道该怎么做。非常感谢任何帮助:)

  • 问题内容: 在pygame中,有没有一种方法来寻找某一方之间的碰撞 一个精灵和另一个精灵的特殊一面?例如,如果 精灵A的顶部与精灵B的底部碰撞,返回True。 我肯定有办法做到这一点,但我找不到任何特别的方法 在文档中。 谢谢! 问题答案: 在PyGame中没有函数来获取侧面碰撞。 但你可以试着用 pygame.Rect.CollipePoint公司 测试是否,,, ,,,, 在里面 (pygam