Ios 框架的接触法
我正在尝试实现一种接触方法,以了解我的播放器块何时接触到黄色框架。下面是我到目前为止的代码。当我将播放器块拖动到黄色帧时,什么也没有发生Ios 框架的接触法,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我正在尝试实现一种接触方法,以了解我的播放器块何时接触到黄色框架。下面是我到目前为止的代码。当我将播放器块拖动到黄色帧时,什么也没有发生 导入SpriteKit 导入iAd 结构位掩码{ 静态let player:UInt32=0x1当前您正在尝试检查两个静态实体之间的接触,但SpriteKit不会生成任何接触事件,除非至少有一个实体是动态的 在您的情况下,这是因为基于边缘的物理实体在默认情况下是静态的,而您的播放器也是静态的,这意味着没有联系人 要解决此问题,您应该将玩家物理体上的属性设置为
导入SpriteKit
导入iAd
结构位掩码{
静态let player:UInt32=0x1当前您正在尝试检查两个静态实体之间的接触,但SpriteKit不会生成任何接触事件,除非至少有一个实体是动态的
在您的情况下,这是因为基于边缘的物理实体在默认情况下是静态的,而您的播放器也是静态的,这意味着没有联系人
要解决此问题,您应该将玩家物理体上的属性设置为true
,如下所示:
player.physicsBody!.dynamic = true
就这样,谢谢!
func didBeginContact(contact: SKPhysicsContact) {
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask == BitMask.player) && (secondBody.categoryBitMask == BitMask.obstacle) {
// do your thing
print("Player contacted with obstacle")
self.view?.paused = true
}
if (firstBody.categoryBitMask == BitMask.player) && (secondBody.categoryBitMask == BitMask.frame) {
// do your thing
print("Player contacted with frame")
self.view?.paused = true
}
}
player.physicsBody!.dynamic = true