我在中间有一个平台,有两个圆圈。
顶部有一个圆圈。底部有一个圆圈。
当底部圆圈触及屏幕顶部时,我想写一条NSLog消息。
当顶部圆圈触及屏幕底部时,我想写一条NSLog消息。
我已将circle1和2设置为categorybitmasks和contactTestBitMasks。我做的任何测试,我只能在顶部或底部圆圈击中屏幕底部时找到,但无法确定如何检测底部圆圈何时触及顶部。我已经开始了我的if语句
-(void)didBeginContact:(SKPhysicsContact *)contact {
// If the top circle touches the bottom edge
if (contact.bodyA.categoryBitMask == bottomEdgeCategory) {
NSLog(@"This is the top ball touching the bottom edge");
}
}
非常感谢任何协助。
答案 0 :(得分:1)
如果您不熟悉Sprite Kit,请阅读以下有关碰撞检测的教程。
这显示了一个sprite与另一个sprite联系的代码。你要做的是沿着屏幕顶部创建一个薄矩形精灵,沿着底部创建另一个精灵矩形。为它们分配不同的接触位掩码。使用以下教程中的代码,添加联系事件以命中topOfScreenSprite和bottomOfScreenSprite。
http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners
我的首选版本:
- (void)didBeginContact:(SKPhysicsContact *)contact{
SKPhysicsBody *firstBody, *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else
{
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}
if (firstBody.categoryBitMask==circle1Category && secondBody.categoryBitMask == topOfScreenCategory)
{
NSLog('c1: Top Hit');
}
else if (firstBody.categoryBitMask==circle1Category && secondBody.categoryBitMask == bottomOfScreenCategory)
{
NSLog('c1: Bottom Hit');
}
if (firstBody.categoryBitMask==circle2Category && secondBody.categoryBitMask == topOfScreenCategory)
{
NSLog('c2: Top Hit');
}
else if (firstBody.categoryBitMask==circle2Category && secondBody.categoryBitMask == bottomOfScreenCategory)
{
NSLog('c2: Bottom Hit');
}
}
注意:firstBody将始终是分配给它的值较低的类别。