我在确定 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 的调用,您可以找到图层的真实比例值。