0

我有一两个问题。我正在使用 Pygame 创建绘图游戏。

我们有球在一个表面上在内部弹跳,彼此和墙壁相撞。使用鼠标,您可以绘制直线,球反弹也反弹。

球是使用 pygame.image 绘制的,因为我们有一个 ball.png 覆盖球的表面和矩形。但是对于线条,我们只是使用 pygame.draw.line() 返回简单的矩形。

而我目前最大的问题:

我选择在自己的 Surface 对象上绘制每条线,然后将它们粘贴到更大的“游戏画布”上。这是因为我想使用此处提供的像素完美碰撞检测以及 surfarray.array_colorkey(),为此我需要一个底层 Surface(球具有 pygame.image 返回的图像 Surface)。我想要线条的 Surface 以便我可以使用碰撞算法的透明度方面,否则球会从包裹线条的 Rects 上反弹。

Q1) 有没有更好的画线方法?我想使用类似于图像或雪碧的东西。有这样的事吗?

Q2)如果不是,我应该如何为每条线创建 Surface,以便使用“游戏画布”中的坐标将线绘制到较小的 Surface 上相对容易,线不会被切断并且上述像素完美碰撞有效?

Q3)如果我完全关闭/有更好的方法来进行碰撞、检测、绘图等。拜托,我全神贯注。

4

1 回答 1

1

圆圈上的线的每像素碰撞是多余的。

关于圆和线的 二维碰撞的信息:移动圆和固定线段之间的二维碰撞

并且,euclidCircle.intersect( Line2 )碰撞: http: //partiallydisassembled.net/euclid/point2.html#SECTION002530000000000000000

numpy可能有更好的解决方案。

于 2012-05-31T23:13:33.480 回答