Swift SKSpriteNode:通过图像特征链接精灵

Swift SKSpriteNode: Chaining Sprites by Image Feature

上下文

为了 MWE 的目的,我们将使用下面的简笔画图像:

目标是让这些精灵链手拉手地在屏幕上移动:

值得注意的是,火柴人图像本身比这个火柴人的臂展更宽。然而,背景是透明的。

根据应用程序,可以制作一个 class 继承自 SKSpriteNode 或封装它,例如一个叫Person的class,用来存放额外的信息,这里可能有一个数组var people = [Person]().

问题

1.) 假设您有两个上述 Person class 的实例,每个精灵都拍摄了一张简笔画图像。如何定位它们 - 以编程方式 - 尽管图像具有透明背景,但精灵正在触摸“'hand in hand'”?当然,人们可能会花一些时间来寻找间距参数以确保实现这一点,但如果重新缩放精灵,则始终必须通过反复试验重新计算该参数。

2.) 给定这些精灵的链条,手拉手,如何让它们以相同的速度在屏幕上移动?如果计算 1.) 中提到的间距参数,则可以为每个 Person 提供一个 SKAction,使它们的结束位置偏移(但总行进距离相同),其中 TimeInterval 是保持不变。有没有办法让所有精灵以每秒 $x$ 像素的速度向左移动直到离开屏幕?

看起来您已经基本回答了自己的问题,但这里还有一些额外的想法:

  1. 使间距值与精灵的大小成正比。

  2. 是的,有一个 SKAction 可以在给定的时间段内将精灵移动给定的距离(实际上是速度):let moveAction = SKAction.moveBy(x: 10, y: 0, duration: 2)