- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个非常简单的游戏,小鸟(玩家)必须躲避岩石,如果它被岩石击中,你就输了。我正在尝试使用 pygame.sprite.collide_rect() 来判断它们是否接触过,但我似乎无法弄清楚如何正确使用它。
这是我的代码:
import pygame
import os, sys
import random
import time
img_path = os.path.join('C:\Python27', 'player.png')
img_path2 = os.path.join('C:\Python27', 'rock.png')
class Bird(object):
def __init__(self):
self.image_s = pygame.image.load(img_path)
self.image_b = self.image_s.get_rect()
self.x = 0
self.y = 0
def handle_keys(self):
key = pygame.key.get_pressed()
dist = 2
if key[pygame.K_DOWN]:
self.y += dist
elif key[pygame.K_UP]:
self.y -= dist
if key[pygame.K_RIGHT]:
self.x += dist
elif key[pygame.K_LEFT]:
self.x -= dist
def draw(self, surface):
surface.blit(self.image, (self.x, self.y))
def background(self, surface):
bg = os.path.join('C:\Python27', 'bg.png')
self.image2 = pygame.image.load(bg)
surface.blit(self.image2, (0,0))
class Rock(object):
def __init__(self, x=640, y=0,):
self.image_s = pygame.image.load(img_path2)
self.image_b = self.image_s.get_rect()
self.x = x
self.y = y
dist = 10
self.dist = dist
def rock(self):
dist = 10
self.x -=dist
def rock_draw(self, surface):
surface.blit(self.image, (self.x, self.y))
def checkCollision(sprite1, sprite2):
col = pygame.sprite.collide_rect(sprite1, sprite2)
if col == True:
sys.exit()
pygame.init()
screen = pygame.display.set_mode((640, 200))
bird = Bird()
rock = Rock()
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
running = False
if rock.x < 0:
y = random.randint(10, 190)
rock = Rock(640, y)
rock.checkCollision(bird.image_b, rock.image_b)
bird.handle_keys()
rock.rock()
screen.fill((255,255,255))
bird.background(screen)
bird.draw(screen)
rock.rock_draw(screen)
pygame.display.update()
clock.tick(40)
当我尝试运行它时,它告诉我它只需要 2 个参数,当我尝试修复时我给出了三个参数,但我收到了各种不同的错误消息。
最佳答案
def checkCollision(sprite1, sprite2):
col = pygame.sprite.collide_rect(sprite1, sprite2)
if col == True:
sys.exit()
应该是
def checkCollision(self, sprite1, sprite2):
col = pygame.sprite.collide_rect(sprite1, sprite2)
if col == True:
sys.exit()
因为它是绑定(bind)到对象的方法。
关于python - 如何在 Pygame 中使用 Sprite Collide,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227616/
我有一个 freelook 相机,并添加了 Cinemachine Collider 的扩展。我已将场景中的所有结构设置到 CameraCollider 层中,在扩展的障碍物检测下的“碰撞”选项中选择
我做了一些研究,但找不到最有效的答案,盒对撞机 2D 还是圆形对撞机 2D? 有this question很快就得到了一个很好的答案,其中说最快的是球体对撞机,其次是胶囊对撞机,然后是盒子对撞机,但我
我有两个 ImageView,我想知道是否有任何方法可以编写某种 if 语句来检查两个图像是否相互“碰撞”,谢谢。 最佳答案 你可以通过制作两类玩家来做到这一点 public class Player
所以我一直在使用 VideoJS 设置自己的流媒体页面,我现在想要的只是并排聊天,在本例中是一个 Twitch 聊天 iframe。 This is what I have now . 问题是聊天框下
在 2D 游戏中,我的功能是检测 Sprite 是否位于圆圈范围内。但是,它没有这样做。 下面的代码简单地遍历了构成圆轮廓的所有点(每个点都有一个 x 和 y 坐标)。然后它将圆分成 4 个大小相等的
我在使用“Unity in Action”一书时偶然发现了一个问题。在第 3 章结束时,您将了解简单 fps 游戏的基础知识。它基本上是一个简单而小的水平的播放器(连接到它的相机),它只存在于形成墙壁
我正在尝试制作一款类似打砖 block 的游戏,但现在我遇到了碰撞问题。像往常一样,积木是矩形(在我的例子中是正方形),球是圆形,所以都是关于轴对齐的边界框。 到目前为止,我已经掌握了简单的碰撞检测算
团结 我创建了两个碰撞器效果,并希望它们在相互碰撞时可以发挥某些作用。但我不知道如何制作两个粒子对撞机。如何让火与水相撞,水能灭火。感谢帮助!!!! 最佳答案 来自文档 ( http://docs.u
谁能告诉我如何设置壁对撞机?我已经使用 OBJ 文件为墙壁设置了一个房间。非常感谢。 最佳答案 看看 Don McCurdy 的“Walls”示例的源代码: https://sandbox.donmc
我正在为 WCF 服务构建自定义 UserNamePasswordValidator。我正在将服务与 Autofac + WCF/ Multi-Tenancy 连接起来,所有这些都很好地结合在一起。但
使用 python 和 pygame 编码和创建游戏的新手。游戏类似于《Flappy Bird》,但在太空中,管道是 meteor 。 正在努力在 Sprite 碰撞时创建一个事件,但 pygame.
我正在通读 this example基于 C++ 的 QT 项目。定义了一个名为 Mouse 的类(在文件 mouse.h 中)继承自 QGraphicsItem,该类有一个声明如下的方法: prot
碰撞检测在我的游戏中有效,但我似乎找不到任何方法来增加每次子弹碰撞时移除的分数计数器。 [相关代码] [类项目符号] def collide(self, spriteGroup): retur
我目前在 Android 的 2D 游戏中工作。我的场景中有一个玩家,如果用户倾斜他的设备,玩家对象就会在地面上移动。但他只是从左侧和右侧移出屏幕。我试图做一堵“墙”,但没有成功。在我的玩家游戏对象处
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
我想在我的车轮上添加一个车轮碰撞器,但它带有 90 度旋转。 这是图片: 如何将对撞机调整到车轮? 最佳答案 为了进一步引用,我将我的评论写下来作为答案。 我能想到的最简单的解决方案是;添加一个空的
我正在努力使用 P5.play 引擎将我的决赛的所有组件组合在一起,虽然我在设置迷你游戏的各个方面取得了一些进展,但我在碰撞方面遇到了困难。这应该很容易,但无论出于何种原因,当我设置两个对象(鱼和垃圾
if (colliderBox.isTouching (col) && col.CompareTag("barrier")) { score++; this.GetCo
if (colliderBox.isTouching (col) && col.CompareTag("barrier")) { score++; this.GetCo
我正在制作一个非常简单的游戏,小鸟(玩家)必须躲避岩石,如果它被岩石击中,你就输了。我正在尝试使用 pygame.sprite.collide_rect() 来判断它们是否接触过,但我似乎无法弄清楚如
我是一名优秀的程序员,十分优秀!