2012-02-13 63 views
0

我對iOS使用的是cocos2d。不知道我在這裏做錯了什麼,或者CCParallaxNode做了什麼奇怪的事情,我只是不明白。Cocos2d,使用CCParallaxNode時奇怪的位置偏移量

我試圖在我的遊戲背景中創建幾層視差滾動,此刻我只有一層添加到視差節點,直到我可以找出發生了什麼問題。當遊戲加載圖層時,它總是向下偏移並留下大約30%的圖像大小。我已經上傳了一張圖片,展示了這裏的位置差異http://oi42.tinypic.com/29dz1av.jpg

這是我的代碼:

background = [CCParallaxNode node]; 
background.anchorPoint = ccp(0,0); 
background.position = ccp(0,0); 
[self addChild: background]; 

background_image = [CCSprite spriteWithFile: @"layer01.png" 
             rect: CGRectMake(0, 0, 100, 100)]; 
background_image.anchorPoint = ccp(0,0); 
background_image.position = ccp(0,0); 

[background addChild: background_image z:0 parallaxRatio: ccp(0,0) positionOffset:ccp(0,0)]; 

的cocos2d的圖標被連接到相同的層作爲視差節點和它的位置和錨點被設置爲0,0,因此圖標的左下方應在與藍色背景圖像的左下方相同的位置。

我已經測試了這個使用基本精靈來代替視差節點,並且所有東西都排列起來,所以它不是圖像本身。

任何幫助,這將不勝感激。

回答

0

首先,我不建議你&位置直接設置視差節點&其子女的錨點,因爲這會造成一些意想不到的結果。您應該將視差節點添加到作爲其子層的圖層,並設置圖層的定位點&以放置視差。其次,CCParallaxNode還提供了一個positionOffset,您可以先將圖片放入視差中。如果你想對齊幾層圖片的視圖中心,這可以提供幫助。

所以我認爲你應該做這樣的事情(因爲我使用了cocos2d-x,我不知道它與OBJ-C右):

layer = [[CCLayer alloc]init]; 
background = [CCParallaxNode node]; 
[layer addChild: background]; 
[self addChild: layer]; 

然後你只需要添加圖片精靈background,並設置圖層的位置&定位點。

希望它可以幫助。

0
  1. 確保背景圖像大小爲480x320。

  2. 你爲什麼寫CGRectMake(0, 0, 100, 100)?爲什麼100和100?你限制你「的CGRect」,這可能是錯的..

+0

爲什麼背景圖像需要是480x320?我確實把它當作1024而不是100,當我玩弄它時,我把它改成了100。我不明白爲什麼這應該有所作爲壽? – Tiddly 2012-02-16 15:38:33

+0

,因爲那是iPhone的屏幕比例。嘗試將其設置爲480x320,然後將CGRectMake更改爲(0,0,480,320)或(0,0,320,480),然後查看是否可以解決您的問題。嘗試沒有錯! – Karim 2012-02-16 15:53:29