SpriteKit - 仅在屏幕的一半内生成随机精灵

时间:2014-10-02 16:33:35

标签: ios sprite-kit sprite

我试图将一个随机对象放在X轴的屏幕上,让它在屏幕的上半部分(Y轴)滚动屏幕。手机处于风景中。

滚动工作正常,但我不断获得在高于屏幕高度的位置创建的对象。以下是基于this问题的代码。

- (CGPoint) randomPointWithinContainerSize:(CGSize)containerSize forViewSize:(CGSize)size
{
    CGFloat yRange = containerSize.height - size.height;

    CGFloat minY = (containerSize.height/2 - yRange) / 2;

    int randomY = (arc4random() % (int)floorf(yRange)) + minY;
    return CGPointMake(self.size.width + 100,randomY);//randomX,
}

self.size.width + 100正在添加我精灵的一半。

这是我的位置代码:

sprite.position = [self randomPointWithinContainerSizeGround:self.scene.size forViewSize:sprite.frame.size];

同样,我希望它只滚动屏幕的上半部分而不是在屏幕的Y轴边界外创建。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这应该有用......

   #define ARC4RANDOM_MAX      0x100000000
    - (CGPoint) randomPointWithinContainerSize:(CGSize)containerSize forViewSize:(CGSize)size
    {
        // Ensure that the sprite's y value is within the container
        CGFloat yRange = containerSize.height/2 - size.height;
        CGFloat minY = (containerSize.height + size.height) / 2;
        CGFloat randomY = ((double)arc4random()/ARC4RANDOM_MAX) * yRange + minY;

        return CGPointMake(containerSize.width+size.width,randomY);
    }