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