1

クラスのインスタンスの負荷をシーンに追加し、それらと別のオブジェクトとの間の衝突を検出しています。

すべてのセットアップと動作

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

衝突が発生するたびに「ヒット」ログを取得します。

これらのオブジェクトの 1 つでインスタンス メソッドを実行するにはどうすればよいですか?

参考までに、これは私がオブジェクトの 1 つを追加したものです。

    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 に答える