你怎么知道节点是否在屏幕spritekit swift上

时间:2015-05-30 22:22:23

标签: swift sprite-kit

我试图找出如何确定节点在屏幕上或屏幕外是否可见。这只是节点的真/假属性吗? 谢谢。 (使用swift spritekit)

6 个答案:

答案 0 :(得分:16)

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

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

这假定selfSKScene子类,例如GameScene

答案 1 :(得分:1)

如果您在场景中放置了SKCameraNode,则可以使用function set_planimetrie( $allegati ) { $result=""; $xml = new SimpleXMLElement($allegati); foreach($xml->children() as $allegato) { if($allegato['type']=='planimetria' && $allegato['planimetria']==1){ if( $result != ''){$result .=',';} $result.= $allegato->file_path; } return $result; } } 方法检查节点是否在摄像机视图内:

Google: Cut and Copy Commands

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

答案 2 :(得分:0)

不是直接但您可以使用其位置进行检查。因此,您可能会执行以下操作:

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

希望有所帮助:)

答案 3 :(得分:0)

您可以使用CGRectIntersectsRect提供frameSKSpriteNode的{​​{1}}。例如:

SKScene

答案 4 :(得分:0)

如果您的program main integer, parameter :: dp = 8 type dat_t sequence character(5) :: s integer :: k real(dp) :: x, y endtype type(dat_t) :: d( 500 ) real(dp) :: a( 100 ) !! write test data open( 10, file="test.dat", form="unformatted" ) write( 10 ) "hello", 100, 777.0_dp, 888.0_dp close( 10 ) !! read test data open( 20, file="test.dat", form="unformatted", status="old" ) read( 20 ) d( 50 ) print *, d( 50 ) a( 1:3 ) = [ real(dp) :: d( 50 )% k, d( 50 )% x, d( 50 )% y ] print *, a( 1:3 ) close( 20 ) end 符合其中的SKScene,则应该有效:

view

其中if !node.intersectsNode(node.parent!) { // node is off-scene/out-of-view } 是您node的孩子SKNode

答案 5 :(得分:0)

这里最好的答案是:

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

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

相关问题