游戏开发中的菜单、滑块与状态管理
一、滑块节点位置处理
在游戏场景中,滑块节点(Slider node)有其特定的位置。例如,音乐滑块的位置设定如下:
musicSlider.position = CGPoint(x: 200, y: -100)
这会导致滑块条的本地位置与它在世界中的实际位置不同。当要检查玩家是否触摸到滑块条时,就会出现问题,因为触摸位置是在世界空间中计算的。 calculateAccumulatedFrame 方法返回的是本地节点位置的边界框,所以需要额外的步骤将本地位置转换为世界位置。新的 box 属性使用 convertPoint 方法来完成这个转换:
if parent != nil {
boundingBox.origin = scene!.convertPoint(boundingBox.origin, fromNode: parent!)
}
只有当节点有父节点时才进行计算,因为如果没有父节点,其本地位置就等同于世界位置。由于边界框是相对于其父节点进行定位的,所以需要将节点位置从父节点转换到场景节点(即游戏世界的根节点),可以使用 SKNode 的 scene 属性直接访问游戏世界的根节点。
为了方便,还可以添加一个 worldPosition 属性来
超级会员免费看
订阅专栏 解锁全文
1618

被折叠的 条评论
为什么被折叠?



