Pygame: 如何return 精灵碰撞的相对位置
Pygame: how to return relative positions of sprites colliding
我有两组:
a pygame.sprite.GroupSingle()
为玩家
(或者我的玩家精灵对象本身不在任何组中)
关卡中所有对象的 pygame.sprite.Group()
。
什么是 simplest/best 检查玩家和 sprite 组之间的碰撞以及 return 这两个 sprite 的相对位置的方法
(或者任何会告诉我你不能朝某个方向走所以不进入物体的东西)。
这只是为了创建平台
精灵已经在 sprite.rect
中找到了它们的位置。因此,首先确定碰撞对象列表,然后循环计算相对位置距离的结果是相当容易的。
collided_with = pygame.sprite.spritecollide( player, platform_group, False )
for platform in collided_with:
relative_x = player.rect.x - platform.rect.x
relative_y = player.rect.y - platform.rect.y
注意上面player
是精灵,不是组。
据我所知Group和GroupSingle没有提供任何碰撞检测功能。 pygame 中的精灵还提供了一个函数 collide_rect,它使用精灵的边界来检测碰撞。缺点是,在许多情况下,精灵的边界不是预期的碰撞边界。
游戏开发中的一种常见方法是使用与玩家、敌人或障碍物关联的额外碰撞对象。在 pygame 中有一个 class Rect 可以用函数 colliderect 为你做这件事。参见:https://www.pygame.org/docs/ref/rect.html#pygame.Rect.colliderect
在很多情况下,矩形就足够了。对于更复杂的碰撞,您必须定义多边形。还有另一个涉及此的计算器问题:Basic 2d collision detection
我有两组:
a pygame.sprite.GroupSingle()
为玩家
(或者我的玩家精灵对象本身不在任何组中)
关卡中所有对象的 pygame.sprite.Group()
。
什么是 simplest/best 检查玩家和 sprite 组之间的碰撞以及 return 这两个 sprite 的相对位置的方法 (或者任何会告诉我你不能朝某个方向走所以不进入物体的东西)。 这只是为了创建平台
精灵已经在 sprite.rect
中找到了它们的位置。因此,首先确定碰撞对象列表,然后循环计算相对位置距离的结果是相当容易的。
collided_with = pygame.sprite.spritecollide( player, platform_group, False )
for platform in collided_with:
relative_x = player.rect.x - platform.rect.x
relative_y = player.rect.y - platform.rect.y
注意上面player
是精灵,不是组。
据我所知Group和GroupSingle没有提供任何碰撞检测功能。 pygame 中的精灵还提供了一个函数 collide_rect,它使用精灵的边界来检测碰撞。缺点是,在许多情况下,精灵的边界不是预期的碰撞边界。
游戏开发中的一种常见方法是使用与玩家、敌人或障碍物关联的额外碰撞对象。在 pygame 中有一个 class Rect 可以用函数 colliderect 为你做这件事。参见:https://www.pygame.org/docs/ref/rect.html#pygame.Rect.colliderect
在很多情况下,矩形就足够了。对于更复杂的碰撞,您必须定义多边形。还有另一个涉及此的计算器问题:Basic 2d collision detection