1

我在确定 CCSprite 的父节点的比例值时遇到问题。

在我的游戏中,我有一个扩展 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 (在 sprite 中调用)引用 SpriteBatchNode 而不是层本身。如果您更改对 self.parent.parent 的调用,您可以找到图层的真实比例值。

4

2 回答 2

0

每个 CCNode 都有一个独立的尺度,但是从父节点向下(嵌套)的尺度是累积的。

例如。父母规模将影响其死者的所有对象,但孩子不会影响其父母。

例如,如果父图层按 50% 缩放,那么所有子图层在显示时都会考虑 50%,即使单个对象的缩放比例为 100%。

数学存在,0.50 * 1.00 = 0.50

于 2013-07-01T00:24:27.603 回答
0

听起来 self.parent 实际上并不是图层。检查那个。

于 2013-06-30T23:50:51.827 回答