我遇到了确定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,则可以找到图层的真实比例值。
答案 0 :(得分:0)
听起来像self.parent实际上不是图层。检查一下。
答案 1 :(得分:0)
每个CCNode都有一个独立的比例,但从父对象(嵌套)开始的比例是累积的。
EG。父母比例将影响所有对象,但是孩子不会影响其父母。
例如,如果父图层的缩放比例为50%,那么即使单个对象的缩放比例为100%,所有子图层在显示时也会有50%的因素。
数学,0.50 * 1.00 = 0.50