gpt4 book ai didi

ios - cocos2d无限循环游戏的差距

转载 作者:行者123 更新时间:2023-11-29 02:50:39 25 4
gpt4 key购买 nike

我正在使用这段代码来实现无限循环,但每次更改屏幕外图像坐标时,我都会有 1-2 秒的间隙。他们为什么会出现?如何解决?我也在使用 SpriteBuilder。

#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

编辑:我将 -1 更改为 -0.5。工作正常!

enter image description here

enter image description here

最佳答案

似乎您正在 iPhone 4 英寸模拟器上使用 iPhone 3.5 英寸的小图像。您的背景图像的分辨率是多少?

编辑:在我的游戏中,我也有一个无限循环。也许我的代码可以帮助你?第一个背景 Sprite 应为 1137x640,第二个背景 Sprite 应为 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);
}

关于ios - cocos2d无限循环游戏的差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24588503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com