大家好,我有一个游戏,那里有一块石头从天而降。现在我把它的形体重力设置为是,所以它会下降,但问题是我不知道如何将它的位置重置到屏幕顶部,这样它就会再次重复它的下降动作。
- (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);
}
}
答案 0 :(得分:0)
覆盖SKScene中的didSimulatePhysics并检查石头是否位于场景可见区域的底部。
if (stone.position.y < 0) { ... }
如果它低于此可视区域,则至少有两个选择。
1)通过调用[stone removeFromParent];
从场景中移除石头并以与创建原石相同的方式重新创建新石头。
或
2)将宝石的位置设置在视图顶部上方的某个位置
stone.position = CGPointMake(stone.position.x, stone.scene.size.height + stoneHeight);