【发布时间】:2014-08-24 11:48:16
【问题描述】:
我正在使用 Swift 和 Sprite Kit 在 XCode Beta 6 上开发游戏。 为了检测是否所有节点都在休眠,我检查了它们的物理body.resting 属性。 在更新方法中,我打印出结果。
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var hero:SKSpriteNode!
override func didMoveToView(view: SKView) {
self.physicsWorld.gravity = CGVectorMake(0, 0)
self.physicsWorld.contactDelegate = self
self.physicsBody = SKPhysicsBody(edgeLoopFromRect:self.frame)
hero = SKSpriteNode(imageNamed: "Spaceship")
hero.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
hero.zPosition = 10.0
hero.physicsBody = SKPhysicsBody(circleOfRadius: hero.size.width/2)
hero.physicsBody.allowsRotation = false
hero.physicsBody.linearDamping = 0.5
self.addChild(hero)
}
override func update(currentTime: CFTimeInterval) {
if hero.physicsBody.resting {
println("resting")
} else {
println("moving")
}
}
}
令我惊讶的是,结果是:
移动 休息 移动 (n次相同) 移动 休息
那么为什么英雄在移动,虽然我什么都没做。节点移动 N 次并休息(休息),然后继续移动。
谁能解释这种行为?这是一个错误还是我错过了什么?提前致谢。
【问题讨论】:
标签: swift sprite-kit game-physics