1

我在我的场景中添加了一个类的实例负载并检测它们与另一个对象之间的碰撞。

所有设置和工作

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];
4

2 回答 2

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
} 
于 2013-12-21T06:23:07.183 回答
0

这很简单:

if ((firstBody.categoryBitMask & ballCategory) != 0 && 
     (secondBody.categoryBitMask & objectCategory) != 0) {
     NSLog(@"Hit");
     Ball *ball = (Ball*)firstBody.node;
     [ball someMethod];
}
于 2013-12-21T17:22:46.883 回答