Sprite kit 检查spritenode的实例是否位于屏幕上的某个位置
我正在尝试这样做,当精灵的一个实例从上到下位于屏幕中央时,程序将向控制台打印一些东西Sprite kit 检查spritenode的实例是否位于屏幕上的某个位置,sprite-kit,swift2,Sprite Kit,Swift2,我正在尝试这样做,当精灵的一个实例从上到下位于屏幕中央时,程序将向控制台打印一些东西 var sprite = SKSpriteNode() override func didMoveToView(view: SKView) { //spawns an instance of the sprite NSTimer.scheduledTimerWithTimeInterval(0.3, target: self, selector: Selector("spawnObje
var sprite = SKSpriteNode()
override func didMoveToView(view: SKView) {
//spawns an instance of the sprite
NSTimer.scheduledTimerWithTimeInterval(0.3, target: self, selector: Selector("spawnObject"), userInfo: nil, repeats: true)
//call the check middle function
checkMiddle()
}
//spawns a sprite
func spawnObject() {
let size = CGSizeMake(self.frame.size.width/3, self.frame.size.width3)
self.physicsWorld.gravity = CGVectorMake(0, -CGFloat(objectSpeed))
sprite = SKSpriteNode(imageNamed: "spriteImage")
sprite.position = CGPointMake(CGFloat(100), self.frame.height)
sprite.size = size
sprite.physicsBody = SKPhysicsBody(circleOfRadius: self.frame.size.width)
sprite.physicsBody?.affectedByGravity = true
addChild(self.sprite)
}
//PRINT WHEN SPRITE IS IN THE CENTER OF SCREEN FROM TOP TO BOTTOM
func checkMiddle() {
if sprite.position.y == self.frame.size.height/2 {
print("center")
}
}
如果这是为了调试目的,您可以使用:
override func update(currentTime: NSTimeInterval)
{
checkMiddle()
}
update()函数在每一帧之前都会被调用,因此您需要小心放入的内容
如果您不需要如此频繁地检查它(每秒60次),您还可以使用以下操作:
let checkCenterAction = SKAction.runBlock(){ self.checkMiddle() }
let waitAction = SKAction.waitForDuration( 0.1 ) // every 1/10th of a second
let checkAndWaitAction = SKAction.sequence([checkCenterAction, waitAction])
sprite.runAction(SKAction.repeatForever(checkAndWaitAction))
还有一个选项是使用SKPhysicsBody检测碰撞,如果这是为了调试目的,您可以使用:
override func update(currentTime: NSTimeInterval)
{
checkMiddle()
}
update()函数在每一帧之前都会被调用,因此您需要小心放入的内容
如果您不需要如此频繁地检查它(每秒60次),您还可以使用以下操作:
let checkCenterAction = SKAction.runBlock(){ self.checkMiddle() }
let waitAction = SKAction.waitForDuration( 0.1 ) // every 1/10th of a second
let checkAndWaitAction = SKAction.sequence([checkCenterAction, waitAction])
sprite.runAction(SKAction.repeatForever(checkAndWaitAction))
另一个选择是使用SKPhysicsBody来检测碰撞