2013-06-30 41 views
1

我遇到了與確定CCSprite父節點的比例值有關的問題。Cocos2d精靈的父母沒有反映真實的比例值

在我的遊戲中,我有一個擴展CCLayer類並基於遊戲觸發器擴展自己的類。該CCLayer的某些子精靈的數學計算在我縮放父CCLayer時會變得不準確。例如,我有一個坦克精靈,需要確定它的父節點內的觸發點。

每當我縮放圖層並詢問圖層的縮放值時,它們都是準確的。但是,當我針對其父級的比例值對該圖層中包含的精靈進行輪詢時,它們總是顯示爲一個。

// From within the sprite 
CCLOG(@"ChildSprite-> Parent's scale values are scaleX: %f, scaleY: %f", 
     self.parent.scaleX, self.parent.scaleY); // Outputs 1.0,1.0 

// From within the layer 
CCLOG(@"Layer-> ScaleX : %f, ScaleY: %f , SCALE: %f", 
     self.scaleX, self.scaleY,  self.scale); // Output is 0.80,0.80 

任何人都可以向我解釋爲什麼會出現這種情況嗎?我不明白爲什麼這些值是不同的。也許我完全不理解Cocos2d的內部設計。任何幫助表示讚賞。

編輯:這是我使用插入一個精靈到層

EarthTank * earthTank = [[EarthTank alloc] initWithWorld:self->world 
atLocation:spawnPointRight withID:pid]; 
earthTank.tankShaft = shaft; 
[earthTank createInitialArsenal:tempPlayer]; 
[earthTank addAndAlignTankShaft]; 
[spriteBatchNode addChild:earthTank z:2]; 

的代碼,所以這個問題是self.parent(稱爲精靈之內)引用SpriteBatchNode而不是層本身。如果您將調用更改爲self.parent.parent,則可以找到圖層的真實比例值。

回答

0

聽起來像self.parent實際上不是圖層。檢查一下。

+0

感謝您的回覆。這可能與我使用spritBatchNode的事實有關嗎?這將意味着父母是spriteBatchNode,其規模將爲1 –

+0

好吧,將調用更改爲self.parent.parent,並且精確地反映了量表。感謝您指點我正確的方向。 –

0

每個CCNode都有一個獨立的比例尺,但父母下降(嵌套)的比例是累積的。

例如,父母的比例會影響所有的死對象,但是孩子不會影響其父母。

例如,如果父圖層的縮放比例爲50%,那麼即使單個對象的縮放比例爲100%,所有孩子也會在顯示時考慮50%。

Math is,0.50 * 1.00 = 0.50