python - 如何在 PyBox2D 中绘制圆形
问题描述
我有一个代码,它使用 pyBox2D 和 PyGame 绘制了一个由几个多边形组成的图形。我已经定义了身体和关节,它运作良好,它完成了它应该做的事情,但是当我想将头部从多边形更改为圆形时会出现问题,但我无法绘制它,因为我用于绘制顶点并且圆形有没有顶点。
问题出现在这部分代码(最终图):
for body in world.bodies: #(ground_body, dynamic_body): # or: world.bodies
# The body gives us the position and angle of its shapes
for fixture in body.fixtures:
shape = fixture.shape
vertices = [(body.transform * v) * PPM for v in shape.vertices]
vertices = [(v[0], SCREEN_HEIGHT - v[1]) for v in vertices]
pygame.draw.polygon(screen, colors[body.type], vertices)
正如我上面所说,问题在于box2D。b2circleShape 没有顶点。我怎样才能为该形状绘制一个圆圈或广告顶点?非常感谢你
编辑:“重复”没有回答我的问题,你能告诉我如何定义圆形我试过这个
import Box2D # The main library
# Box2D.b2 maps Box2D.b2Vec2 to vec2 (and so on)
from Box2D.b2 import (world, polygonShape, staticBody, dynamicBody, circleShape)
from Box2D import (b2FixtureDef, b2PolygonShape, b2CircleShape)
chest_body = world.CreateDynamicBody(
position=(10, 6.5),
fixtures=b2FixtureDef(
shape=b2PolygonShape(box=(0.5, 1.5)), density=120),
angle=0) # This is a rectangular body which is defined correctly
circle = world.CreateDynamicBody(
position=(10, 6.5),
fixtures=b2FixtureDef(
shape=b2CircleShape(0.5),
angle=0)) # I tried this after checking your manual, this does not work
问题可能是由于我不知道如何为 pyBox2D 运行 IntelliSense 或根本不存在 IntelliSense 造成的(也可能是由这种情况造成的)。这意味着我不知道需要哪些参数 任何帮助表示赞赏
解决方案
也有python手册。检查这个
circle = b2CircleShape(pos=(1, 2), radius=0.5)
推荐阅读
- java - 添加新数据后更新 JFreeChart 图,MVC 方法?
- javascript - Ruby on rails 调用 javascript 函数
- javascript - 我在 Angular 8 中遇到了两种方式数据绑定的问题
- python - 如何将 JSON 列表数据存储到 python 变量中?
- javascript - 如何使用 jQuery 将当前 index.html 正文内容替换为另一个 html 文件?
- deprecated - 如何在 Trac 中弃用页面?
- typescript - 关于使用 withRouter 破坏别名的打字稿警告
- python - 如何使用 pandas 识别 CSV 文件中过去 10 天的数据行?
- javascript - 您如何将“for”转换为异步模式?
- ios - 生产应用程序上的 EXC_BAD_ACCESS 崩溃,5% 的用户正在发生这种情况,但我无法重现它