python - pygame 不会在我的 pymunk 模拟中画出我的圆圈
问题描述
我对 pymunk 还很陌生,我想为我未来的游戏制作物理引擎,只是有一个小问题,我的代码不会画出 pygame 试图可视化的圆圈。这是我的代码。
import pygame
import pymunk
import sys
def create_item(space):
body = pymunk.Body(1, 100, body_type = pymunk.Body.DYNAMIC)
body.position = (450, 50)
shape = pymunk.Circle(body, 80)
space.add(body, shape)
return shape
def draw_items(items):
for item in items:
pygame.draw.circle(screen, item_color, item.body.position, 80)
def quit():
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
def display_update():
screen.fill(bg_color)
clock.tick(FPS)
space.step(1/60)
pygame.display.flip()
# Constructor
pygame.init()
# Constants and Variables
WIDTH = 900
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
FPS = 60
clock = pygame.time.Clock()
# Colors
bg_color = 30, 30, 40
item_color = 200, 200, 200
# Pymunk Variables
space = pymunk.Space()
space.gravity = (0, 500)
items = []
items.append(create_item(space))
# Loops
def main():
running = True
while running:
quit()
display_update()
draw_items(items)
main()
我真的不知道这里的问题是什么,它不会给我一个错误或类似的东西,我只得到一个干净的空白画布和我的 bg 颜色。(也很抱歉不好的评论)
解决方案
您必须在更新显示之前绘制对象
def main():
running = True
while running:
quit()
screen.fill(bg_color)
draw_items(items)
pygame.display.flip()
clock.tick(FPS)
space.step(1/60)
你实际上是在一个Surface
物体上画画。如果您在与 PyGame 显示关联的Surface上绘图,则这不会立即在显示中可见。pygame.display.update()
当使用或更新显示时,更改变为可见pygame.display.flip()
。
典型的 PyGame 应用程序循环必须:
- 通过
pygame.event.pump()
或处理事件pygame.event.get()
。 - 根据输入事件和时间(分别为帧)更新对象的游戏状态和位置
- 清除整个显示或绘制背景
- 绘制整个场景(
blit
所有对象) - 通过
pygame.display.update()
或更新显示pygame.display.flip()
- 限制每秒帧数以限制 CPU 使用率
推荐阅读
- docker - Docker 卷 - 创建选项(驱动程序)
- javascript - SequelizeJS 用承诺返回“fulfillmentValue”
- python - pyqt5中qabstractvideosurface的present()的错误视频帧
- python-3.x - Python ImportError 作为模块进入我的项目
- json - 选择子子对象中的所有键
- javascript - bootstrap-datetimepicker enabledDates 未按预期工作
- typescript - 如何在 Vue.js(打字稿)中使用路由
- plantuml - plantuml :包含多次 startsub 部分时的奇怪行为
- wordpress - 未捕获的错误:调用成员函数 get_slider_language()
- python - 尽管使用了 scoped_session,但 Sqlalchemy “数据包序列号错误”