タイル張りの地図があります。cocos2Dを使用しています。アイソメ マップには CCLayerPanZoom があります。ズームとスクロール用。次に、押した位置にタイルを追加します。それは動作しません。間違った位置にタイルを挿入しています。
マップのスケーリング (可能なズームとスクロール) と関係がありますか?
-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
touchLocation = [touch locationInView: [touch view]];
touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
touchLocation = [self convertToNodeSpace:touchLocation];
CGPoint playerPos = _player.position;
CGPoint diff = ccpSub(touchLocation, playerPos);
if (abs(diff.x) > abs(diff.y)) {
if (diff.x > 0) {
playerPos.x += self.map.tileSize.width;
} else {
playerPos.x -= self.map.tileSize.width;
}
} else {
if (diff.y > 0) {
playerPos.y += self.map.tileSize.height;
} else {
playerPos.y -= self.map.tileSize.height;
}
}
//player.position = playerPos; // Todo: Trymove
if (playerPos.x <= (self.map.mapSize.width * self.map.tileSize.width) &&
playerPos.y <= (self.map.mapSize.height * self.map.tileSize.height) &&
playerPos.y >= 0 &&
playerPos.x >= 0 ) {
[self setPlayerPosition:playerPos];
}
if([TileMapLayer isOnTheMapMoreRestrictive:touchLocation map:self.map mapsize:self.map.mapSize.width] )
[self plantObject:touchLocation];
else
CCLOG(@"Outside possition");
[self setDotPosition: [self tilePosFromLocation:touchLocation tileMap:self.map]];
}
-(void)plantObject:(CGPoint) location{
punkt = [CCSprite spriteWithFile:@"tree.png"];
punkt. position = [self tilePosFromLocation:location tileMap:self.map];
[_map addChild:punkt z:4];
}