python - 在 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)
解决方案
您的密钥处理代码在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)
推荐阅读
- javascript - for 循环输入并返回每个输入的值
- php - PHP:将字符串拆分为相同数量的字符,如果它太大,找到最后一个 \n 并从那里继续?
- r - 如何为 keras 编写 R 代码以尝试不同的节点、学习率、辍学等以找到最佳模型
- maven - 从多模块 Maven 项目的子模块导入类
- sql - 从常量格式字符串中提取日期的 SQL 查询
- html - 表格中的行对齐不正确
- json - 比较python中2个嵌套字典的值
- haskell - 关于“变量不在范围内”和“异常”的问题:
: 功能中的非详尽模式" - bintray - 下载时签名的 url 过期时下载会发生什么?
- c# - 如何从包含 ExcelFile 作为字符串的 http 响应转换回实例 ExcelFile(库 GemBox)?C#