我试图找出如何确定节点在屏幕上或屏幕外是否可见。这只是节点的真/假属性吗? 谢谢。 (使用swift spritekit)
答案 0 :(得分:16)
您可以使用以下方法测试节点是否在场景中:
if (!intersectsNode(sprite)) {
println("node is not in the scene")
}
这假定self
是SKScene
子类,例如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;
}
}
方法检查节点是否在摄像机视图内:
您还可以使用contains
实例方法获取相机可见的所有节点。
答案 2 :(得分:0)
不是直接但您可以使用其位置进行检查。因此,您可能会执行以下操作:
if (/*the node's position is between 0 and the screen's .x and .y*/) {
//on screen
}
希望有所帮助:)
答案 3 :(得分:0)
您可以使用CGRectIntersectsRect
提供frame
和SKSpriteNode
的{{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
}
"交叉"方法很重,涉及太多计算,如果在很多情况下使用会产生延迟