如何使SKSpritekit节点相互反弹

时间:2014-10-07 19:10:10

标签: sprite-kit

我知道如何设置物理属性,但我不知道我需要什么代码才能让它们真实地互相反弹,就像台球桌上的球一样。我准备好了didBeginContact方法,

-(void)didBeginContact:(SKPhysicsContact*)contact
{
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (gearCategory | gear1Category)) {
    [
}
}

但是我不知道我需要什么代码,任何拥有良好数学和矢量技能的人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

这是精灵套件中的一项非常简单的任务。

//Add to top of scene
static const uint32_t spriteCategory =  0x1 << 0;

//declare when creating sprite
sprite.physicsBody.categoryBitMask = spriteCategory;
sprite.physicsBody.collisionBitMask = spriteCategory;

这样做是设置一个精灵与spriteCategory作为他们的categoryBitMask碰撞所有精灵。您可以使用以下代码将您的精灵集与多个不同的categoryBitMasks冲突。

sprite.physicsBody.collisionBitMask = spriteCategory|otherCategory|anotherCategory;

开始联系是否用于在节点触摸时执行某些代码。您可以使用contactTestBitMask属性来检测项目何时触摸。 collisionBitMask会自动为您处理冲突!!!

我附上了一个链接,其中有一整段用于碰撞和联系。

http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners