gpt4 book ai didi

ios - SpriteKit - 生成随机节点

转载 作者:行者123 更新时间:2023-11-29 02:58:59 26 4
gpt4 key购买 nike

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

- (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 检查创建的随机点,那里没有问题。

最佳答案

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

为什么?因为当使用物理时,我们让物理引擎确定所有具有物理体的物体的位置。所以设置新的位置并没有太大的效果。

关于ios - SpriteKit - 生成随机节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com