当前位置: 首页 > 知识库问答 >
问题:

Pygame -改变形状/移动碰撞矩形。为了雪碧

赏新知
2023-03-14

我有一个pygame精灵动画,其中精灵的位置和形状在整个特定的动画序列中发生变化(例如-攻击)。我如何为碰撞调整精灵的矩形?

我的图像:在动画的一部分中,我的精灵位于png图像文件的中心(96x64像素)。在动画的另一部分中,我的精灵靠近png图像文件的右侧(96x64像素)。在动画的另一部分中,精灵改变形状(由剑移动引起)。等等。

我是否必须进行一些数学运算和计算来调整动画每帧子画面的碰撞条件,还是有更简单的方法?我是pygame的新手,所以我不确定所有不同的功能,也不确定从哪里开始创建不同的 rec。对于每个帧。

PS.我正在使用我在网上找到的现成精灵 - 每帧的尺寸为96x64像素

第1、11、22帧:

共有1个答案

郁景龙
2023-03-14

我已经有一段时间没有和Pygame合作了,但我相信你可以使用Pygate。遮罩对象。遮罩基本上是具有图像前景精确轮廓的对象。它需要相当多的计算能力,但如果您只为一个主要角色创建一个掩码,那么应该可以。可以从图像创建遮罩:

myMask = pygame.mask(myImage)

然后,可以使用其矩形或创建要使用的新曲面:

myRect = myMask.get_rect()  # Returns the pygame.Rect object that conatains mask, or:
mySurface - myMask.to_surface()  # Returns a pygame.Surface object of the mask

希望这能有所帮助,我的信息来自:

https://www.pygame.org/docs/ref/mask.html

 类似资料:
  • 我画了一个旋转的矩形,我需要检查它是否碰撞。整个班级: 这是碰撞函数: 这就是我得到的: 我认为这已经足够了,因为它每次都会随着旋转位置的更新来检测碰撞,但是似乎我必须使用分离轴定理,你能帮助我吗?

  • 所以我试图用pygame制作一个我们之间的游戏。我刚刚开始,所以我没有太多东西,现在正在制作地图。然而,我正在努力解决的一件事是碰撞逻辑。地图目前有一个细长的八边形形状,但是我想不管是什么形状,我都会使用类似pygame多边形的东西。当我运行我现在的代码时,它会检查我的玩家(pygame矩形)和墙壁(pygame多边形)之间的碰撞,它说: 我发现这是因为pygame多边形返回了一个矩形,但在碰撞检

  • 我一直在尝试在Libgdx中找到/创建矩形的碰撞检测,但似乎什么都做不到。我有一个叫bucket的矩形,宽度和高度为64,还有一个叫wall的矩形,宽度和高度为64。我试着让玩家不穿过矩形,可以在粘墙的同时继续移动,而不需要通过相位或随机传送。我的方法在有1个块的情况下有效,但当有多个块的时候,它就会中断,不起作用。 我知道这种方法很难看但这只是实验 如果有人能给我指出正确的方向或分享一些对我有帮

  • 问题内容: 我遇到一个问题,即一个矩形与另一个矩形发生碰撞。所以我的问题是,如何获取相交方法以检查碰撞?还是在这种情况下还有其他方法可以处理碰撞? 我正在创建一个回合制战斗游戏(类似于《最终幻想》或《龙骑传奇》),其中玩家的角色在屏幕的右侧,而敌人在屏幕的左侧。玩家和敌人轮流进攻。因此,当玩家攻击时,子画面动画会从右到左在屏幕上移动,直到停在敌人面前,进行攻击并返回到其起始坐标。玩家和敌人周围都有

  • 我有一个问题,碰撞检测一个圆和一个矩形。我曾尝试用勾股定理来解决这个问题。但所有查询都不起作用。矩形与圆的矩形包围盒发生碰撞。

  • 我遇到了一个问题,显示一个矩形与另一个矩形发生了碰撞。所以我的问题是,如何让Intersect方法检查碰撞?或者在这种情况下有其他方法来处理碰撞吗? 我正在制作一个回合制战斗游戏(类似于《最终幻想》或《龙骑兵传说》),其中玩家的角色位于屏幕的右侧,敌人位于屏幕左侧。玩家和敌人轮流攻击。因此,当玩家攻击时,精灵动画会在屏幕上从右向左移动,直到它停在敌人面前,攻击并返回到其起始坐标。玩家和敌人都有一个