簡體   English   中英

SpriteKit-生成隨機節點

[英]SpriteKit - Generating random nodes

我正在SpriteKit中構建一個簡單的游戲,玩家使用加速度計控制球,以便捕捉不同的能量道具,硬幣等。 問題在於,當調用負責生成隨機新powerup(node)的方法(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檢查創建的隨機點,那里沒有問題。

在創建物理物體之前設置坐標。 在具有物理物體的對象上設置坐標會提供不確定的結果。

為什么? 因為在使用物理時,我們讓物理引擎確定具有物理物體的所有對象的位置。 因此,設置新職位不會產生太大影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM