我中间有一个平台,有两个圆圈。
顶部有一个圆圈。底部有一个圆圈。
当底部圆圈触及屏幕顶部时,我想写一条NSLog消息。
当顶部的圆圈接触到屏幕底部时,我想写一条NSLog消息。
我已经将circle1和2设置为有分类位掩码和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");
}
}
如能提供任何协助,将不胜感激。
发布于 2014-10-12 15:18:56
如果您是雪碧套件的新手,请阅读以下有关碰撞检测的教程。
这显示了让一个精灵与另一个精灵联系的代码。您要做的是创建一个薄薄的长方形精灵沿屏幕顶部和另一个沿底部。给他们分配不同的接触位掩码。使用下面的教程中的代码,添加一个接触事件来访问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将始终是分配给它的值较低的类别。
https://stackoverflow.com/questions/26317624
复制相似问题