gpt4 book ai didi

ios - SpriteKit - 停止对象堆积

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:17 25 4
gpt4 key购买 nike

我想知道我应该添加什么代码来阻止岩石堆积在屏幕底部并在休息(不移动)时将它们移除。

这是创建岩石的代码。如果您需要任何其他代码,请告诉我:)

-(void)addRock {

SKSpriteNode *rock = [SKSpriteNode spriteNodeWithImageNamed:@"asteroid"];
rock.position = CGPointMake ([self makeRandomXWBetween:0 and:self.size.width], self.size.height);
rock.name = @"rock";
rock.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:rock.size];
rock.physicsBody.usesPreciseCollisionDetection = YES;
rock.physicsBody.categoryBitMask = rockCategory;
rock.physicsBody.contactTestBitMask = dodgerCategory;
[self addChild:rock];
}

-(void)makeRocks {

SKAction *makeRocks = [SKAction sequence: @[
[SKAction performSelector:@selector(addRock) onTarget:self],
[SKAction waitForDuration:0.3 withRange:0.0]
]];
[self runAction: [SKAction repeatActionForever:makeRocks]];
}

在此先感谢您的帮助!

最好的问候,路易斯。

最佳答案

由于您希望岩石在静止时被移除,因此可以在它们的 velocity 属性为零时移除它们。

您可以在 -update 方法中进行检查。

-(void)update:(CFTimeInterval)currentTime {

[self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop){

if ((node.physicsBody.velocity.dx == 0) && (node.physicsBody.velocity.dy == 0) && (node.position.y < self.size.height)) {
[node removeFromParent];
}
}];
}

关于ios - SpriteKit - 停止对象堆积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23384778/

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