你如何判断一个节点是否在屏幕上 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
提供 SKSpriteNode
和 SKScene
的 frame
。例如:
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" 方法很重,涉及的计算量太大,如果在很多情况下使用会产生延迟
我想知道如何确定一个节点是在屏幕上还是屏幕外可见。这只是节点的一个true/false属性吗? 谢谢。 (使用 swift spritekit)
不是直接的,但你可以使用它的位置来检查。因此,您可能会这样做:
if (/*the node's position is between 0 and the screen's .x and .y*/) {
//on screen
}
希望对您有所帮助:)
您可以使用 CGRectIntersectsRect
提供 SKSpriteNode
和 SKScene
的 frame
。例如:
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" 方法很重,涉及的计算量太大,如果在很多情况下使用会产生延迟