【问题标题】:Randomly choose between two actions and repeat it every certain amount of time在两个动作之间随机选择并每隔一定时间重复一次
【发布时间】:2014-12-01 06:57:49
【问题描述】:

让我的应用在两个动作之间随机选择然后每半秒重复一次动作时遇到了很多麻烦。

这是我的代码:

    //Setting the sprite to a position on the screen (it happens to be right where the  screen cuts off)
    SKSpriteNode *lightnut = [SKSpriteNode spriteNodeWithImageNamed:@"lightnut.png"];
    lightnut.position = CGPointMake(257,510);
    [self addChild: lightnut];

    //The action that makes the sprite move to the new part of the screen
    SKAction *moveNodeUp = [SKAction moveByX:0.0 y:-600.0 duration:2.0];
    [lightnut runAction: moveNodeUp];

我希望我的应用选择将精灵设置为 (257,510) 或 (150, 510)。

例如:

    SKSpriteNode *lightnut = [SKSpriteNode spriteNodeWithImageNamed:@"lightnut.png"];
    lightnut.position = CGPointMake(257,510);
    OR
    lightnut.position2 = CGPointMake (150,510);
    [self addChild: lightnut];

    SKAction *moveNodeUp = [SKAction moveByX:0.0 y:-600.0 duration:2.0];
    [lightnut runAction: moveNodeUp];

如果有人能提供帮助,那就太好了!

另外,我不太明白这一点,但我仍在努力弄清楚。有没有办法刷新动作(这样我的应用程序会在两点之间随机选择并让它们移动到新位置)甚至在之前的动作还没有完成之前,使它在另一个之前发送一个新的精灵甚至离开了屏幕?谢谢!

【问题讨论】:

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


    【解决方案1】:

    要获得随机、均匀分布,可以使用 arc4random_uniform() (see e.g. here)

    抛硬币看起来像这样:

    BOOL heads = arc4random_uniform(100) < 50;
    

    您可能知道下一步该做什么,例如:

    lightnut.position = (heads)? CGPointMake(257,510) : CGPointMake(150,510);
    

    【讨论】:

    • 感谢您的解释!我想我了解了这一点,但我不明白如何将我的代码和那些放在一起。感谢您让事情变得更简单!
    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多