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

把一群精灵作为一个整体移动

董小林
2023-03-14

我正在与Python 2.7和pyplay空间入侵者克隆。我可以让我的坦克移动,发射子弹,外星飞船被删除,所以冲突检测工作正常。我创建了一个精灵组,我希望我可以使用这个组移动所有的船只。我也尝试了“unionall”,但这似乎对这个团体不起作用。我可以像这样穿过所有的船:

shipXpos = []
for ship in shipList:
    shipXpos.append(ship.rect.x)

然后

shipXMax = max(shipXpos)
shipXMin = min(shipXpos)

通过这种方式,我想找到船只的边界(虽然我猜rect.right和rect.left会更好),如果屏幕的边缘相比,这样我就可以改变船只的方向。

似乎如果我能把所有的精灵都当成一个大矩形,那将是最简单的方法。

我希望这是有道理的,是明确的。非常感谢。

共有1个答案

孟高峰
2023-03-14

在外星飞船的精灵类中,编写一个移动外星飞船的update函数。您可以向其传递可能需要的任何参数(例如当前方向向左或向右)。然后,使用pygame。(传说中的)精灵组在主程序中更新(),一次更新所有精灵。

根据您想要的行为,您可能不需要检查屏幕的侧面是否有碰撞。我假设你想让所有的外星飞船一致移动,也就是说,如果最外层的飞船撞到边缘,你想让所有的飞船改变方向。即使最外层的飞船被摧毁,原始的太空入侵者也会这样做,这意味着剩余的飞船不会移动到外缘,而是停留在预定的路径上。在这种情况下,每艘船在向左移动之前都会向右移动一定数量的像素,您只需在更新功能中跟踪该循环即可。

 类似资料:
  • 我正在用移动的精灵和障碍物制作游戏来学习SpriteKit。我希望移动的精灵与障碍物相撞并从障碍物上反弹,但我希望障碍物保持固定。我该怎么做?我尝试了以下方法,但没有成功: 设置障碍物.physicsBody?。isDynamic=true。这使得精灵们穿过了障碍物 使用 。我知道<代码>联系人。车身A和是通过值而不是引用传递的,因此我循环通过一个带有障碍物的数组,并以此方式设置速度。障碍物仍然被

  • 移动精灵 现在你知道了如何展示精灵,但是让它们移动呢?很简单:使用Pixi的ticker。这被称为 游戏循环 。任何在游戏循环里的代码都会1秒更新60次。你可以用下面的代码让 cat 精灵以每帧1像素的速率移动。 function setup() { //Start the game loop by adding the `gameLoop` function to //Pixi's `t

  • 你的开发者必须力求在项目的公共论坛中以一个单独的参与者出现,而不是一个单独的公司。这不是因为作为一个公司出现本身固有的一些负面含义(好的,或许有一些,但那不是本书所讨论的)。而是因为开源项目的结构配备只能处理个人实体。一个单独的贡献者可以讨论、提交补丁、获取信誉、表决等等。而一个公司不能。 此外,因为分布式的行为方式,你避免了对于刺激性中央集权的敌对。让你的开发者在邮件列表中意见并不一致。鼓励他们

  • 我正在用PyGame制作一个小游戏,相机聚焦在一个代表角色的精灵上,当按下箭头键时,地图会围绕它移动。问题是地图不动。我以前多次遇到过这个问题,我想我已经把它缩小到可能的范围,但是我不知道如何真正解决这个问题。 这是代码: 基于我过去的PyGame程序,我总是在移动被绘制到屏幕上的精灵集时遇到问题,比如我在这里所做的。即使是平庸简单的例子也会失败。我想知道的是这是为什么,我怎样才能简明扼要地画出大

  • 我有三个组成部分。它们都绑定了一个值。 下面是包含三个组件的刀片文件 刀片文件: 所有这些组件都是动态的,它们只依赖于名为:type的绑定值 Vue文件: 问题是,当我试图用一个组件更新、获取或执行任何操作时。它运行所有API调用以获取它们的特定数据。 我只想在获取数据时加载一个表。

  • 我在Java和Slick2D方面有几年的经验,我正试图将一个游戏移植到libgdx,因为它是一个更好的库。然而,我有一个简单的问题在屏幕上移动精灵。这个应用编程接口一定有一些我不理解的范例。我将我的代码提炼成以下内容。它识别输入,并在我的整个实体和网络系统中运行它,无论是在服务器上还是从服务器上,但是精灵保持在同一个位置。任何帮助都会很棒。 我的create()方法: getCurrentX/Y方