2

ゲームに合わせて流れる背景を作成しようとしています。ただし、画像は連続ではありません。各画像ロードの間にスペースがあります。画像をループし続けたい。

スプライトの作り方はこちら

CCSprite *sprite = [CCSprite spriteWithFile:@"Image.png" rect:CGRectMake(0, 0, 960, 640)];

ccTexParams tp = {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT};

[sprite.texture setTexParameters:&tp];
sprite.anchorPoint = ccp(1.0f/8.0f, 0);
sprite.position = ccp(screenW/8, 0);

スプライトの位置を更新するメソッド。

- (void) setOffsetX:(float)offsetX {
if (_offsetX != offsetX) {
_offsetX = offsetX;
CGSize size = _sprite.textureRect.size;
_sprite.textureRect = CGRectMake(_offsetX, 0, size.width, size.height);
}
}

助けてください

4

2 に答える 2

3

画像の幅は 2 の累乗である必要があります。つまり、繰り返したい場合は、幅を 64、128、256、512 などにする必要があります。

表示されているギャップは、OpenGL が空のスペースをテクスチャに埋め込んで 2 のべき乗にした場所です。

于 2011-09-11T08:28:20.333 に答える
1

数回試した後、スプライトの寸法が 2 の累乗であることを確認するのが最善の方法です。レイヤーをスケーリングする予定がない場合は、任意のサイズのスプライトを使用して、これを使用できます。

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D];

http://ak.net84.net/iphone/gap-between-sprites-when-moving-in-cocos2d/

于 2011-12-28T14:19:28.000 に答える