Swift 如何防止部分SKSpriteNode通过边缘
我通过以下方式创建了左边缘:Swift 如何防止部分SKSpriteNode通过边缘,swift,sprite-kit,swift2,Swift,Sprite Kit,Swift2,我通过以下方式创建了左边缘: let leftBorderEdgeRect = CGRectMake(self.frame.origin.x, self.frame.origin.y, 0.5 , CGRectGetHeight(frame)) let leftBorderEdge = SKNode() leftBorderEdge.physicsBody = SKPhysicsBody(edgeLoopFromRect: leftBorderEdgeRect) if firstBody.ca
let leftBorderEdgeRect = CGRectMake(self.frame.origin.x, self.frame.origin.y, 0.5 , CGRectGetHeight(frame))
let leftBorderEdge = SKNode()
leftBorderEdge.physicsBody = SKPhysicsBody(edgeLoopFromRect: leftBorderEdgeRect)
if firstBody.categoryBitMask == spriteCategory && secondBody.categoryBitMask == leftBorderCategory {
print("contact with leftBorder")
print("firstBody.node xPos: \(firstBody.node?.position.x) and yPos: \(firstBody.node?.position.y)")
self.view?.paused = true
}
任何时候,一个SKSpriteNode与边缘接触时,大约有10%的大小(宽度)通过边缘。我通过施力移动精灵。现在,当通过以下方式在didBeginContact中建立联系时,我暂停场景:
let leftBorderEdgeRect = CGRectMake(self.frame.origin.x, self.frame.origin.y, 0.5 , CGRectGetHeight(frame))
let leftBorderEdge = SKNode()
leftBorderEdge.physicsBody = SKPhysicsBody(edgeLoopFromRect: leftBorderEdgeRect)
if firstBody.categoryBitMask == spriteCategory && secondBody.categoryBitMask == leftBorderCategory {
print("contact with leftBorder")
print("firstBody.node xPos: \(firstBody.node?.position.x) and yPos: \(firstBody.node?.position.y)")
self.view?.paused = true
}
我真的不确定是什么导致它通过边缘边界。我还尝试为整个场景设置一个世界边缘,但仍然得到了相同的结果。我正在使用精灵的默认定位点。您是否尝试将usesPreciseCollisionDetection设置为true 如果对象较小,或移动速度很快,或帧速率较低,则对象在帧之间移动的距离可能大于几个像素。这意味着,在评估下一次碰撞检测时,装置的移动可能已经使其超出边缘
如果有少量移动对象,并且仅希望根据场景矩形的边界约束移动,则可以覆盖场景的update()方法并在那里检查边界。检查矩形内或矩形外的点足够快,如果只检查几个精灵,则不会影响游戏性能。能否显示整个didBeginContacts方法