2016-06-16 30 views
0

我建立一个游戏Spritekit斯威夫特,我有三个节点和地面之间的DidBeginContact检测功能,我需要添加一个变量,让我使用的接触位置的看法,但我不不知道该怎么做。 我希望我可以用一个变量类似于一个在的touchesBegan 功能发现如何找到碰撞位置

设位置= touch.locationInNode(个体经营)

的任何援助,将不胜感激。

回答

0

你想要得到的发生在精灵本身在接触的精确位置?我认为那不可能。

如果你只是想大致位置在接触偏偏刚刚获得的接触点的位置属性。

我认为您的联系功能看起来是这样的(应该)。

func didBeginContact(contact: SKPhysicsContact) { 

    let firstBody: SKPhysicsBody 
    let 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 == GROUND CATEGORY) && (secondBody.categoryBitMask == OBJECT CATEGORY) { 

    } 

    .... 
} 

只需在相应的if语句中将所需的精灵的位置分配给您所需的属性即可。

if (firstBody.categoryBitMask == GROUND CATEGORY) && (secondBody.categoryBitMask == OBJECT CATEGORY) { 

     if let objectNode = secondBody.node { // safely unwrap 
       yourLocationProperty = objectNode.position 
     } 
    } 

希望这有助于

+0

这工作!再次感谢。 :) – Xcoder555

+0

不客气。快乐的编码。 – crashoverride777