ios - 以编程方式沿 SkScene 宽度分布 4 个 SKSpriteNode

标签 ios swift sprite-kit

我知道场景坐标是 (0,0) 在中心,所以我如何使用 for 循环沿宽度分布 4 个 SKNode

for index 1...4 {

 let node = SKNode() 
 node.postion = evenly distribute along the scene width. who can i do it?
}

最佳答案

您可以使用场景的宽度除以节点数减 1。然后乘以索引减 1,然后添加到场景的最小 x 值。

let widthRange = scene.frame.maxX - scene.frame.minX

for index 1...4 { 
    let node = SKNode() 
    node.postion = scene.frame.minX + widthRange/(4-1) * (index-1)
}

这应该使每个节点沿着场景的宽度彼此等距离放置,从每条边开始。

如果 for 循环的索引不是从 1 开始,则需要将代码修改为如下所示:

let widthRange = scene.frame.maxX - scene.frame.minX

var counter = 0
for index 352...356 { 
    let node = SKNode() 
    node.postion = scene.frame.minX + widthRange/(4-1) * counter
    counter+=1
}

如果您不确定要使用哪个版本,请使用第二个版本,因为它对 for 循环格式的依赖较小(只要您在每次执行之前将 counter 重置为 0用这个)。

如果您需要任何关于什么做什么的说明,请随时询问。

编辑

这应该阐明代码的实际作用。

let widthRange = scene.frame.maxX - scene.frame.minX 用于获取场景的大小,然后将其设置为一个变量,用于之后。将其设为变量是可选的,因为您可以只使用场景大小,但我这样说是为了不那么困惑。

var counter = 0 只是创建一个用于 for 循环的计数器变量来放置节点。确保在每次运行循环之前将其设置为 0。 counter+=1 随后会被使用,因此每个节点都乘以一个递增的值,从而创建不同的 x 位置。 (稍后再讲)

node.postion = scene.frame.minX + widthRange/(4-1) * counter 是复杂的线。首先,我使用 scene.frame.minX 从最低宽度/x 位置开始放置。 widthRange/(4-1) 有点难理解。它使用场景宽度(从前面开始),然后除以节点数量减一。理解这一点的最好方法是切割一个矩形(仅在一个方向上)以便它有 2 个切割(2 个节点)和 2 个边(其他 2 个节点),您需要 3 个部分。 (矩形将被切成 3)。这得到每个节点之间的距离。 #ofNodes-1 的模式适用于每个节点数量。 * counter 部分是使节点的 x 位置实际发生变化的部分。由于每次循环结束时,计数器都会增加 1(从 0 开始),因此之前 (widthRange/(4-1)) 的“部分”数量会增加 1。

关于ios - 以编程方式沿 SkScene 宽度分布 4 个 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40793741/

相关文章:

macos - 如何在 OSX Today 扩展中添加信息按钮?

ios - SpriteKit : Getting the absolute node position

swift - 动画在 Swift 2.2 中不起作用

ios - TableView : How to proceed after catching 'NSInternalInconsistencyException' ?

ios - 如何为手动调用的 Crashlytics 崩溃提供自定义函数/行/文件信息

ios - 如何在表格 View 中将所有单元格设置为特定大小并仅调整接收更大输入长度的单元格的大小

ios - 无法快速引用 Xcode GameScene.sks

ios - 知道 UICollectionView 是否在滚动

objective-c - 对于强集合实例,赋值给nil等于释放赋值给nil吗?

ios - 在 map View 中更改注释 View 的 rightCalloutAccessoryView 按钮的图像