Ios cocos2d无限循环博弈中的缺口
我用这段代码实现无限循环,但每次屏幕外图像坐标改变时,我都会有1-2秒的间隔。为什么它们会出现?如何修复它?我也在使用SpriteBuilderIos cocos2d无限循环博弈中的缺口,ios,objective-c,cocos2d-iphone,spritebuilder,Ios,Objective C,Cocos2d Iphone,Spritebuilder,我用这段代码实现无限循环,但每次屏幕外图像坐标改变时,我都会有1-2秒的间隔。为什么它们会出现?如何修复它?我也在使用SpriteBuilder #import "MainScene.h" static const CGFloat scrollSpeed =100.f; @implementation MainScene{ CCPhysicsNode *_world; CCNode *_oneb; CCNode *_twob; NSArray *_bb; }
#import "MainScene.h"
static const CGFloat scrollSpeed =100.f;
@implementation MainScene{
CCPhysicsNode *_world;
CCNode *_oneb;
CCNode *_twob;
NSArray *_bb;
}
- (void)didLoadFromCCB {
_bb = @[_oneb, _twob];
}
-(void)update:(CCTime)delta{
_world.position=ccp(_world.position.x - (scrollSpeed * delta), _world.position.y ); // moving world
for (CCNode *ground in _bb) {
// get the world position of the ground
CGPoint groundWorldPosition = [_world convertToWorldSpace:ground.position];
// get the screen position of the ground
CGPoint groundScreenPosition = [self convertToNodeSpace:groundWorldPosition];
// if the left corner is one complete width off the screen, move it to the right
if (groundScreenPosition.x <= (-1 * ground.contentSize.width)) {
ground.position = ccp(ground.position.x + 2 * ground.contentSize.width, ground.position.y);
}
}
}
@end
#导入“mainsecene.h”
静态常数CGFloat scrollSpeed=100.f;
@实现主场景{
世界物理学会;
CCNode*\u oneb;
CCNode*_twob;
NSArray*_bb;
}
-(无效)从CCB处获得的数据{
_bb=@[_oneb,_twob];
}
-(无效)更新:(CCTime)增量{
_world.position=ccp(_world.position.x-(滚动速度*增量),_world.position.y);//移动世界
用于(CCNode*接地输入_bb){
//获取地面的世界位置
CGPoint groundWorldPosition=[[U world convertToWorldSpace:ground.position];
//获取地面的屏幕位置
CGPoint groundScreenPosition=[self-convertToNodeSpace:groundWorldPosition];
//如果左角离屏幕有一整宽,则将其移到右侧
如果(groundScreenPosition.x看起来您在iPhone 4英寸模拟器上使用的是iPhone 3.5英寸的小图像。您的背景图像的分辨率是多少
编辑:在我的游戏中,我也有一个无限循环。也许我的代码可以帮助你?第一个背景精灵应该是1137x640,第二个1136x640。你再也不会有空白了!希望它能帮助你
初始方法:
backgroundSprite = [CCSprite spriteWithFile:@"background.png"];
backgroundSprite.anchorPoint = ccp(0,0);
backgroundSprite.position = ccp(0,0);
[self addChild:backgroundSprite z:0];
backgroundSprite2 = [CCSprite spriteWithFile:@"background2.png"];
backgroundSprite2.anchorPoint = ccp(0,0);
backgroundSprite2.position = ccp([backgroundSprite boundingBox].size.width,0);
[self addChild:backgroundSprite2 z:0];
勾选方法:
backgroundSprite.position = ccp(backgroundSprite.position.x-1,backgroundSprite.position.y);
backgroundSprite2.position = ccp(backgroundSprite2.position.x-1,backgroundSprite2.position.y);
if (backgroundSprite.position.x<-[backgroundSprite boundingBox].size.width) {
backgroundSprite.position = ccp(backgroundSprite2.position.x+[backgroundSprite2 boundingBox].size.width,backgroundSprite.position.y);
}
if (backgroundSprite2.position.x<-[backgroundSprite2 boundingBox].size.width) {
backgroundSprite2.position = ccp(backgroundSprite.position.x+[backgroundSprite boundingBox].size.width,backgroundSprite2.position.y);
}
backgroundSprite.position=ccp(backgroundSprite.position.x-1,backgroundSprite.position.y);
backgroundSprite2.position=ccp(backgroundSprite2.position.x-1,backgroundSprite2.position.y);
如果(backgroundSprite.position.xBackground图像为640:1136。使用4英寸模拟器进行测试。我刚刚缩小了屏幕截图。在发布编辑后的答案之前,我找到了解决方案:)。我将“-1”值更改为“-0.5”。