2014-10-02 81 views
0

我試圖在X軸上放置一個隨機的屏幕外物體,讓它在屏幕上半部分(Y軸)的屏幕上滾動。手機在風景中。SpriteKit - 在屏幕上只顯示一半的隨機雪碧

滾動工作正常,但我不斷收到創建對象的位置高於屏幕高度。這裏是我的代碼基於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軸範圍之外創建的。

我該怎麼做?

+0

你的語句「我試圖把一個隨機對象關閉屏幕」和「但我不斷收到對象創建關閉屏幕」的衝突。請澄清。 – 0x141E 2014-10-02 20:29:56

+0

我清理了我的答案。我希望它們在屏幕右側創建,但在滾動時保持在屏幕範圍內。留在身高的上半部分。 – Siriss 2014-10-02 20:43:52

回答

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); 
    } 
+0

這是你的遊戲需要的嗎? – 0x141E 2014-10-05 15:56:39

+0

謝謝,那樣做了! – Siriss 2014-10-08 15:07:53