spritekit中的skactions并重新定位sprite

时间:2014-05-04 07:45:00

标签: sprite-kit

大家好,我有一个游戏,那里有一块石头从天而降。现在我把它的形体重力设置为是,所以它会下降,但问题是我不知道如何将它的位置重置到屏幕顶部,这样它就会再次重复它的下降动作。

- (void) addStoneAtPosition {
      _StoneNode = [SKSpriteNode spriteNodeWithImageNamed:@"stone2@2x"];
      _StoneNode.position = CGPointMake(self.size.width/2, self.size.height);

      _StoneNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:_StoneNode.size];
      _StoneNode.physicsBody.usesPreciseCollisionDetection = YES;
      _StoneNode.physicsBody.dynamic = YES;
      _StoneNode.physicsBody.mass = 10.0f;
      _StoneNode.physicsBody.categoryBitMask = CNPhysicsstone1Category;
      _StoneNode.physicsBody.contactTestBitMask = CNPhysicsbulletCategory |  
                                                  CNPhysicsstone1Category;
      [_gameNode addChild:_StoneNode];
      [_StoneNode attachDebugRectWithSize:_StoneNode.size];
      _StoneNode.physicsBody.affectedByGravity = YES;
      for (int i = 0; i<100; i++) {
          _StoneNode.position = CGPointMake(self.size.width/2, self.size.height);
      }
  } 

enter image description here

1 个答案:

答案 0 :(得分:0)

覆盖SKScene中的didSimulatePhysics并检查石头是否位于场景可见区域的底部。

if (stone.position.y < 0) { ... }

如果它低于此可视区域,则至少有两个选择。

1)通过调用[stone removeFromParent];从场景中移除石头并以与创建原石相同的方式重新创建新石头。

2)将宝石的位置设置在视图顶部上方的某个位置

stone.position = CGPointMake(stone.position.x, stone.scene.size.height + stoneHeight);