SpriteKit - 生成随机节点

时间:2014-05-07 14:27:09

标签: ios objective-c xcode ios7 sprite-kit

我正在SpriteKit中构建一个简单的游戏,其中玩家使用加速度计控制球,以便捕捉不同的加电,硬币等等。问题是当调用负责生成随机新上电(节点)的方法(generatePowerUp)时,它总是在(0,0)坐标处创建一个新的。在其他任何地方调用的相同方法都可以。

- (void)generatePowerUp {
CGPoint newPoint = CGPointMake([self randomFloatBetween:30 and:290], [self randomFloatBetween:30 and:450]);
powerUp = [SKSpriteNode spriteNodeWithImageNamed:@"me"];
powerUp.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.powerUp.size.width/2];
powerUp.physicsBody.categoryBitMask = powerUpCategory;
powerUp.position = newPoint;
powerUp.physicsBody.contactTestBitMask = playerCategory;
[self addChild:powerUp];

}

-(void)didBeginContact:(SKPhysicsContact *)contact{

if (contact.bodyA.categoryBitMask == powerUpCategory) {
    [contact.bodyA.node removeFromParent];
    myScore++;
    [self generatePowerUp];

}
if (contact.bodyB.categoryBitMask == powerUpCategory) {
    [contact.bodyB.node removeFromParent];
    myScore++;
    [self generatePowerUp];
}
}

为什么会这样?我使用nslog检查创建的随机点,那里没有问题。

1 个答案:

答案 0 :(得分:1)

在创建物理实体之前设置坐标。 在具有物理主体的对象上设置坐标会提供不确定的结果。

为什么呢?因为在使用物理时,我们让物理引擎用物理体来确定所有物体的位置。因此,设定新职位并没有太大作用。