如何实现一个摄像头和碰撞检测平台游戏?

2024-09-28 22:40:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助,使屏幕跟踪球员的整个水平,以及处理碰撞在同一时间。我把这两件事都分开做了,它们工作得很好,但我在同时做这两件事时遇到了麻烦。在

这是我尝试过的。如果你需要更多的代码,我很乐意加入。在

我做错什么了?我已经试了三天了。在

class Sprite(pygame.sprite.Sprite):
    def __init__(self,img):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(img).convert_alpha()

        self.rect = self.image.get_rect()

class Player(Sprite):
    velocity_y = 0
    onGround = True
    def update(self):
        self.rect.y += self.velocity_y
        self.movePlayer()
        self.checkBarriers()
        self.checkCollision(0, self.velocity_y,terrain_list)
        self.checkCollision(Terrain.velocity_x*-1,0,terrain_list)

    def movePlayer(self):
        if moving_up: # pressing the up arrow key
            if self.onGround == True:
                self.velocity_y = -SPEED
                self.rect.y -= 1
                self.onGround = False
        if not moving_up: self.velocity_y = SPEED

    def checkBarriers(self):
        if self.rect.y >= LOWER_BOUNDARY-GROUND_HEIGHT-ROBOT_HEIGHT:
            self.onGround = True
            self.velocity_y = 0
            self.rect.y = LOWER_BOUNDARY-GROUND_HEIGHT-ROBOT_HEIGHT
        if self.rect.x <= LEFT_BOUNDARY:
            Terrain.velocity_x = 0

    def checkCollision(self,xvel,yvel,blocks):
        for block in blocks:
            if pygame.sprite.collide_rect(block,player):

                if xvel < 0: # handle collisions for moving right. (Everything I've tried didnt work)                                  
                if xvel > 0: # handle collisions for moving left
                if yvel > 0:
                     self.rect.y = block.rect.y-ROBOT_HEIGHT # player moving down
                     self.onGround = True

class Terrain(Sprite):
    velocity_x = 0

    terrain_x = 0
    terrain_y = 0
    terrain_vel_x = 0
    terrain_vel_y = 0

    def update(self):
        self.rect.x += self.velocity_x
        self.movePlayer()

    def movePlayer(self):
        if moving_right: self.velocity_x = -SPEED
        elif not moving_right: self.velocity_x = 0
        if moving_left: self.velocity_x = SPEED

Tags: rectselftrueifdefpygameclassspeed
1条回答
网友
1楼 · 发布于 2024-09-28 22:40:04

请检查以下问题,因为他们可能会回答你的问题。在

Example1

Example 2

仅供参考,示例2是一个更好的例子,因为我相信它回答了您的问题,您是如何思考的。它回答了侧滚和几乎与你的角色相机的跟踪,然而例子1本身有一些非常有趣的东西。在

相关问题 更多 >