Cocos2d CCLayer.scale

我正在制作一个小型游戏,其中主要的游戏玩法图层根据大量参数放大和缩小。这是通过将.scale属性设置为小数部分来完成的。Cocos2d CCLayer.scale

但是,我有一个问题,当从任何子节点调用[[CCDirector sharedDirector] winSize];,我得到一个缩放窗口大小,这有点吸:)除了乘​​以所有我的离屏检查比例加1呢?

下面是一个例子

我创建一个CCLayer,并把精灵就可以了。所有的精灵与初始化过程中屏幕尺寸的静态变量,基本上

static CGRect screenRect; //stored as a static variable for performance reasons 

...

-(id)init{

...

// make sure to initialize the screen rect only once

if (CGRectIsEmpty(screenRect)){

CGSize screenSize = [[CCDirector sharedDirector] winSize];

screenRect = CGRectMake(0, 0, screenSize.width, screenSize.height);

CCLOG(@"Screen Size during init: %f, %f", screenSize.width, screenSize.height);

}

}

那么我当精灵围绕它是否关闭屏幕上移动的检查,如果是的话,我把它自动给对面:

if(newPosition.x > screenRect.size.width){ 

newPosition.x = 0;

}else if(newPosition.x < 0){

newPosition.x = screenRect.size.width;

}

if(newPosition.y > screenRect.size.height){

newPosition.y = 0;

}else if(newPosition.y < 0){

newPosition.y = screenRect.size.height;

}

所有的作品都很好,和预期的一样。但是,如果我更改父CCLayer的scale属性,那么屏幕外定位将与图层一起“缩放”,这有点奇怪。因此,如果我设置了CCLayer.scale = 0.5f;,那么它看起来好像屏幕边界已经移动到手机屏幕的“内部”。我想避免这种情况。怎么样?

回答:

谈话相当多的开发商后,关闭边界检查需要采取比例考虑在内,即

newPosition.x > screenRect.size.width/CCLayer.scale 

以上是 Cocos2d CCLayer.scale 的全部内容, 来源链接: utcz.com/qa/259981.html

回到顶部