pymunk.pyglet_util 模块

此子模块包含帮助器函数,可帮助您结合使用pymunk和pyglet进行快速原型制作。

旨在帮助调试和原型制作,而不是在完整的应用程序中用于实际生产。本模块中包含的方法对您的坐标系是固执己见的,并且不是很优化(它们使用批处理绘图,但可能仍然有优化的空间)。

class pymunk.pyglet_util.DrawOptions(**kwargs: Any)[源代码]

基类:SpaceDebugDrawOptions

__init__(**kwargs: Any) None[源代码]

画一只金龟子。空格。

典型用法::

>>> import pymunk
>>> import pymunk.pygame_util
>>> s = pymunk.Space()
>>> options = pymunk.pyglet_util.DrawOptions()
>>> s.debug_draw(options)

通过将shape.color设置为希望绘制形状的颜色,可以控制形状的颜色。

>>> c = pymunk.Circle(None, 10)
>>> c.color = (255, 0, 0, 255) # will draw my_shape in red

您可以选择传入一个批处理以用于绘制。只需记住,您需要调用DRAW YOYS。

>>> my_batch = pyglet.graphics.Batch()
>>> s = pymunk.Space()
>>> options = pymunk.pyglet_util.DrawOptions(batch=my_batch)
>>> s.debug_draw(options)
>>> my_batch.draw()

有关完整示例,请参阅pyglet_util.demo.py

参数:
科瓦格人您可以选择性地传入一个pyglet.graph ics.Batch

如果给定一个批次,则所有绘图都将使用该批次进行绘制。如果未指定批次,则绘图将使用新批次。请记住,如果您传入自己的批处理,则需要自己调用DRAW。

property collision_point_color: SpaceDebugColor

碰撞的颜色。

应为介于0和255(r,g,b,a)之间的4个整数的元组。

示例:

>>> import pymunk
>>> s = pymunk.Space()
>>> b = pymunk.Body(1,10)
>>> c1 = pymunk.Circle(b, 10)
>>> c2 = pymunk.Circle(s.static_body, 10)
>>> s.add(b, c1, c2)
>>> s.step(1)
>>> options = pymunk.SpaceDebugDrawOptions()
>>> s.debug_draw(options)
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=52.0, g=152.0, b=219.0, a=255.0))
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
draw_segment (Vec2d(8.0, 0.0), Vec2d(-8.0, 0.0), SpaceDebugColor(r=231.0, g=76.0, b=60.0, a=255.0))
>>> options.collision_point_color = (10,20,30,40)
>>> s.debug_draw(options)
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=52.0, g=152.0, b=219.0, a=255.0))
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
draw_segment (Vec2d(8.0, 0.0), Vec2d(-8.0, 0.0), SpaceDebugColor(r=10.0, g=20.0, b=30.0, a=40.0))
color_for_shape(shape: Shape) SpaceDebugColor
property constraint_color: SpaceDebugColor

约束的颜色。

应为介于0和255(r,g,b,a)之间的4个整数的元组。

示例:

>>> import pymunk
>>> s = pymunk.Space()
>>> b = pymunk.Body(1, 10)
>>> j = pymunk.PivotJoint(s.static_body, b, (0,0))
>>> s.add(j)
>>> options = pymunk.SpaceDebugDrawOptions()
>>> s.debug_draw(options)
draw_dot (5.0, Vec2d(0.0, 0.0), SpaceDebugColor(r=142.0, g=68.0, b=173.0, a=255.0))
draw_dot (5.0, Vec2d(0.0, 0.0), SpaceDebugColor(r=142.0, g=68.0, b=173.0, a=255.0))
>>> options.constraint_color = (10,20,30,40)
>>> s.debug_draw(options)
draw_dot (5.0, Vec2d(0.0, 0.0), SpaceDebugColor(r=10.0, g=20.0, b=30.0, a=40.0))
draw_dot (5.0, Vec2d(0.0, 0.0), SpaceDebugColor(r=10.0, g=20.0, b=30.0, a=40.0))
draw_circle(pos: Vec2d, angle: float, radius: float, outline_color: SpaceDebugColor, fill_color: SpaceDebugColor) None[源代码]
draw_dot(size: float, pos: Vec2d, color: SpaceDebugColor) None[源代码]
draw_fat_segment(a: Vec2d, b: Vec2d, radius: float, outline_color: SpaceDebugColor, fill_color: SpaceDebugColor) None[源代码]
draw_polygon(verts: Sequence[Vec2d], radius: float, outline_color: SpaceDebugColor, fill_color: SpaceDebugColor) None[源代码]
draw_segment(a: Vec2d, b: Vec2d, color: SpaceDebugColor) None[源代码]
draw_shape(shape: Shape) None
property flags: int

位标志应绘制哪些形状、关节和碰撞。

默认情况下,所有3个标志都已设置,这意味着将绘制形状、关节和碰撞。

使用仅基本文本的DebugDraw实现的示例(通常,您应该使用所需的后端,例如 pygame_util.DrawOptionspyglet_util.DrawOptions ):

>>> import pymunk
>>> s = pymunk.Space()
>>> b = pymunk.Body()
>>> c = pymunk.Circle(b, 10)
>>> c.mass = 3
>>> s.add(b, c)
>>> s.add(pymunk.Circle(s.static_body, 3))
>>> s.step(0.01)
>>> options = pymunk.SpaceDebugDrawOptions() 
>>> # Only draw the shapes, nothing else:
>>> options.flags = pymunk.SpaceDebugDrawOptions.DRAW_SHAPES
>>> s.debug_draw(options) 
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=52.0, g=152.0, b=219.0, a=255.0))
draw_circle (Vec2d(0.0, 0.0), 0.0, 3.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
>>> # Draw the shapes and collision points:
>>> options.flags = pymunk.SpaceDebugDrawOptions.DRAW_SHAPES
>>> options.flags |= pymunk.SpaceDebugDrawOptions.DRAW_COLLISION_POINTS
>>> s.debug_draw(options)
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=52.0, g=152.0, b=219.0, a=255.0))
draw_circle (Vec2d(0.0, 0.0), 0.0, 3.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
draw_segment (Vec2d(1.0, 0.0), Vec2d(-8.0, 0.0), SpaceDebugColor(r=231.0, g=76.0, b=60.0, a=255.0))
shape_dynamic_color: SpaceDebugColor = (52, 152, 219, 255)
shape_kinematic_color: SpaceDebugColor = (39, 174, 96, 255)
property shape_outline_color: SpaceDebugColor

形状的轮廓颜色。

应为介于0和255(r,g,b,a)之间的4个整数的元组。

示例:

>>> import pymunk
>>> s = pymunk.Space()
>>> c = pymunk.Circle(s.static_body, 10)
>>> s.add(c)
>>> options = pymunk.SpaceDebugDrawOptions()
>>> s.debug_draw(options)
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
>>> options.shape_outline_color = (10,20,30,40)
>>> s.debug_draw(options)
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=10.0, g=20.0, b=30.0, a=40.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
shape_sleeping_color: SpaceDebugColor = (114, 148, 168, 255)
shape_static_color: SpaceDebugColor = (149, 165, 166, 255)
property transform: Transform

变换在绘制之前应用,例如用于缩放或平移。

示例:

>>> import pymunk
>>> s = pymunk.Space()
>>> c = pymunk.Circle(s.static_body, 10)
>>> s.add(c)
>>> options = pymunk.SpaceDebugDrawOptions() 
>>> s.debug_draw(options) 
draw_circle (Vec2d(0.0, 0.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
>>> options.transform = pymunk.Transform.scaling(2)
>>> s.debug_draw(options)
draw_circle (Vec2d(0.0, 0.0), 0.0, 20.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))
>>> options.transform = pymunk.Transform.translation(2,3)
>>> s.debug_draw(options)
draw_circle (Vec2d(2.0, 3.0), 0.0, 10.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=149.0, g=165.0, b=166.0, a=255.0))

备注

并非所有转换都受调试绘制逻辑支持。支持均匀缩放和平移,但不支持旋转、线性拉伸或剪切。