你如何判断一个节点是否在屏幕上 spritekit swift

How do you tell if a node is on the screen spritekit swift

我想知道如何确定一个节点是在屏幕上还是屏幕外可见。这只是节点的一个true/false属性吗? 谢谢。 (使用 swift spritekit)

不是直接的,但你可以使用它的位置来检查。因此,您可能会这样做:

if (/*the node's position is between 0 and the screen's .x and .y*/) {
    //on screen
}

希望对您有所帮助:)

您可以使用 CGRectIntersectsRect 提供 SKSpriteNodeSKSceneframe。例如:

if !CGRectIntersectsRect(frame, spriteNode.frame) {
    // Outside the bounds of the scene because the frames are no longer intersecting.
}

您可以使用以下方法测试场景中是否有节点:

if (!intersectsNode(sprite)) {
  println("node is not in the scene")
}

这假定 self 是一个 SKScene 子类,例如 GameScene

如果您的 SKScene 适合其包含的 view,这应该有效:

if !node.intersectsNode(node.parent!) {
     // node is off-scene/out-of-view
}

其中 node 是一个 SKNode,即 SKScene 的 child。

如果你在场景中放置一个 SKCameraNode,你可以使用 contains 方法检查一个节点是否在相机的视图内:

https://developer.apple.com/documentation/spritekit/skcameranode

您还可以使用containedNodeSet实例方法获取相机可见的所有节点。

这里的最佳答案是:

if scene.frame.contains(myNode.position) {
//do stuff
}

"intersect" 方法很重,涉及的计算量太大,如果在很多情况下使用会产生延迟