【问题标题】:Sprite Kit collision - perform instance method on instance that collidesSprite Kit 碰撞 - 对碰撞的实例执行实例方法
【发布时间】:2013-12-20 18:23:47
【问题描述】:

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

所有设置和工作

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

【问题讨论】:

    标签: objective-c collision-detection sprite-kit instance-methods


    【解决方案1】:

    很简单:

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

    【讨论】:

      【解决方案2】:

      我已经输入了执行此操作的方法,我已将类别命名为您的名字,因此您应该可以复制和粘贴代码:),如果您有任何问题,请告诉我。

      - (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-10-28
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      相关资源
      最近更新 更多