首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pygame中搭建平台

在Pygame中搭建平台
EN

Stack Overflow用户
提问于 2020-01-09 11:33:38
回答 1查看 801关注 0票数 0

我试图让我的平台游戏,不知道如何让玩家不通过平台。我对Python和Pygame非常陌生,因此如果能得到一些帮助,我将不胜感激。到目前为止,我已经添加了动画、背景和跳转机制。我主要遵循了一个指南,但也自己添加了一些东西。

代码语言:javascript
复制
import pygame

pygame.init()

win = pygame.display.set_mode((500, 480))
pygame.display.set_caption("First Game")

walkRight = [pygame.image.load('R1.png'), pygame.image.load('R2.png'), pygame.image.load('R3.png'),
             pygame.image.load('R4.png'), pygame.image.load('R5.png'), pygame.image.load('R6.png'),
             pygame.image.load('R7.png'), pygame.image.load('R8.png'), pygame.image.load('R9.png')]
walkLeft = [pygame.image.load('L1.png'), pygame.image.load('L2.png'), pygame.image.load('L3.png'),
            pygame.image.load('L4.png'), pygame.image.load('L5.png'), pygame.image.load('L6.png'),
            pygame.image.load('L7.png'), pygame.image.load('L8.png'), pygame.image.load('L9.png')]
bg = pygame.image.load('bg.jpg')
char = pygame.image.load('standing.png')
platform = pygame.image.load('platform.png')

x = 50
y = 400
width = 40
height = 60
vel = 5
platform_x = 250
platform_y = 320

clock = pygame.time.Clock()

isJump = False
jumpCount = 10

left = False
right = False
walkCount = 0
platform_pos = 320





def redrawGameWindow():
    global walkCount

    win.blit(bg, (0, 0))
    if walkCount + 1 >= 27:
        walkCount = 0

    if left:
        win.blit(walkLeft[walkCount // 3], (x, y))
        walkCount += 1
    elif right:
        win.blit(walkRight[walkCount // 3], (x, y))
        walkCount += 1
    else:
        win.blit(char, (x, y))
        walkCount = 0
    win.blit(platform, (platform_x,platform_y))

    pygame.display.update()


run = True

while run:
    clock.tick(27)

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

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT] and x > vel:
        x -= vel
        left = True
        right = False

    elif keys[pygame.K_RIGHT] and x < 500 - vel - width:
        x += vel
        left = False
        right = True

    else:
        left = False
        right = False
        walkCount = 0

    if not isJump:
        if keys[pygame.K_SPACE]:
            isJump = True
            left = False
            right = False
            walkCount = 0
    else:
        if jumpCount >= -10:
            y -= (jumpCount * abs(jumpCount)) * 0.5
            jumpCount -= 1
        else:
            jumpCount = 10
            isJump = False






    redrawGameWindow()

pygame.quit()
EN

回答 1

Stack Overflow用户

发布于 2020-01-15 20:53:21

我处理这个问题的方式是将平台创建为pygame矩形,self.platform = pygame.Rect(x, y, w, w)。然后,我在播放器周围创建了一个hitbox,例如一个类似于前面的矩形:self.player_hitbox = pygame.Rect(x, y, w, w)

然后,您可以使用代码if self.player_hitbox.colliderect(self.platform)检查与2的冲突,并对该信息执行您想要的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59656876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档