私は tiledmap ベースのアプリを持っており、その上を移動するスプライトを取得することに取り組んでいます。しかし、この仕事をしていて気づいたことがあります。次のコードを実行すると:
float x = 0.0f;
float y = 0.0f;
playerSprite.position = ccp(x,y);
次に、私のプレーヤーは実際にはマップから外れています:
代わりに、キャラクターを次の位置に配置することでこれを補う必要があります。
playerSprite.position = ccp(x + playerSprite.boundingBox.size.width / 2, y + playerSprite.boundingBox.size.height / 2)
それとも、マップの構成に何か問題がありますか? タイルを 0,0 いっぱいまで広げてはいけませんか?
私のマップは次のように初期化されます。
// Setup our map
map = [CCTMXTiledMap tiledMapWithTMXFile: @"Map.tmx"];
NSAssert(nil != map, @"Map is nil");
[self addChild: map z: -1];
そしてプレーヤーは初期化された幅です:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: @"SpriteTest.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"SpriteTest.png"];
[self addChild: spriteSheet];
self.playerSprite = [CCSprite spriteWithSpriteFrameName: @"cyanWalkHorizontal1.png"];
[spriteSheet addChild: self.playerSprite];
self.playerSprite.position = ccp(0,0);
したがって、全体として、初期化が間違っているかどうか疑問に思っています。それを配置するときに、スプライトの幅/高さを考慮する必要があります。