我知道如何设置物理属性,但我不知道我需要什么代码才能让它们真实地互相反弹,就像台球桌上的球一样。我准备好了didBeginContact方法,
-(void)didBeginContact:(SKPhysicsContact*)contact
{
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (gearCategory | gear1Category)) {
[
}
}
但是我不知道我需要什么代码,任何拥有良好数学和矢量技能的人都可以帮助我吗?
答案 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