• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Cocos2d CCLayer.scale

objective-c 来源:clops 6次浏览

我正在制作一个小型游戏,其中主要的游戏玩法图层根据大量参数放大和缩小。这是通过将.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 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)