首页 > 解决方案 > 在 OpenGL 和 Pygame 中无法旋转 3D 立方体

问题描述

我正在尝试在 OpenGL 和 Pygame 中创建一个 3D 立方体。当你按住一个按钮时,我希望立方体旋转。但是,现在立方体仅在您按下按钮而不是按住时旋转。有人可以帮我解决这个问题吗?谢谢!

def main():
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL)

    gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)

    glTranslatef(0.0, 0.0, -5)
    glRotatef(45, 1, 1, 0)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

            keys = pygame.key.get_pressed()  # checking pressed keys
            if keys[pygame.K_a]:
                glRotatef(5, 1, 0, 0)
            if keys[pygame.K_s]:
                glRotatef(5, 0, 1, 0)
            if keys[pygame.K_d]:
                glRotatef(5, 0, 0, 1)

标签: pythonopenglgraphicspygame

解决方案


您的密钥处理代码在for循环中。因此,如果没有事件,您将不会处理密钥。将代码移出循环:

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    keys = pygame.key.get_pressed()  # checking pressed keys
    if keys[pygame.K_a]:
        glRotatef(5, 1, 0, 0)
    if keys[pygame.K_s]:
        glRotatef(5, 0, 1, 0)
    if keys[pygame.K_d]:
        glRotatef(5, 0, 0, 1)

推荐阅读