Swift SKSpriteNode:按图像特征链接 Sprite

Posted

技术标签:

【中文标题】Swift SKSpriteNode:按图像特征链接 Sprite【英文标题】:Swift SKSpriteNode: Chaining Sprites by Image Feature 【发布时间】:2016-12-31 21:14:53 【问题描述】:

上下文

出于 MWE 的目的,我们将使用以下简图:

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

值得注意的是,简笔画图像本身比该简笔画的臂展要宽。然而,背景是透明的。

根据应用程序,可以创建一个继承自SKSpriteNode 或封装它的类,例如一个名为Person的类,用于存储附加信息,其中可能有一个数组var people = [Person]()

问题

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

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

【问题讨论】:

【参考方案1】:

您似乎已经回答了大部分自己的问题,但这里有一些额外的想法:

    使间距值与精灵的大小成比例。

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

【讨论】:

2.也是我所指的。我的意思是,如果没有一个 SKAction 只是在没有固定终点的轨迹上设置速度。 你也可以给节点一个物理体并设置它们的velocity属性。

以上是关于Swift SKSpriteNode:按图像特征链接 Sprite的主要内容,如果未能解决你的问题,请参考以下文章

通过名称 Swift 2、Xcode 7 获取 SKSpriteNode

Swift SKSpriteNode:检测 Tap / DoubleTap / LongPress

SKSpriteNode 不会移动

为啥当我将 SKSpriteNode 与图像一起使用时它不会反弹,但当我使用 SKShapeNode 时它确实有效?

如何在 Swift 中的图像之间切换?

SkSpriteNode在通用游戏中的位置