1

将类的实例加载到我的场景并检测它们与另一个对象之间的碰撞。Sprite Kit碰撞 - 在发生碰撞的实例上执行实例方法

所有设置和工作

if ((firstBody.categoryBitMask & ballCategory) != 0 && (secondBody.categoryBitMask & objectCategory) != 0) { 
    NSLog(@"Hit"); 
} 

获取“打”日志每当我得到一个碰撞。

我该如何在其中一个对象上执行实例方法?

仅供参考,我添加了一个对象。

Ball *ball = [[Ball alloc]init]; 
    ball.position = CGPointMake(spawnPoint.x + arc4random() % 5, spawnPoint.y); 
    ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:5]; 
    ball.physicsBody.dynamic = YES; 
    ball.physicsBody.mass = 10; 
    ball.name = @"ball"; 
    ball.physicsBody.categoryBitMask = ballCategory; 
    ball.physicsBody.contactTestBitMask = targetCategory | ballCategory; 
    ball.physicsBody.collisionBitMask = targetCategory | ballCategory | objectCategory; 
    [self addChild:ball]; 

回答

0

这很简单:

if ((firstBody.categoryBitMask & ballCategory) != 0 && 
    (secondBody.categoryBitMask & objectCategory) != 0) { 
    NSLog(@"Hit"); 
    Ball *ball = (Ball*)firstBody.node; 
    [ball someMethod]; 
} 
+1

是的,终于明白了这一点,非常感谢 –

0

我已经把这样做的方法,我有一个名为类别的您的名字,所以你就应该能够复制和粘贴代码:),如果您有任何麻烦让我知道。

- (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 & ballCategory) != 0 && 
    (secondBody.categoryBitMask & objectCategory) != 0) 
{ 
//stuff that u want to call when collision happens 
} 
+0

嘿,这是我有什么,并且我得到的碰撞日志语句。问题是我需要调用球实例 –

+0

上的实例方法是否添加了评论所在的实例方法? – user3110546