Привет, я создал слой объектов на моей карте тайлов с помощью редактора карт тайлов так:
http://i.stack.imgur.com/f5fZK.png
Большой квадрат представляет слой моего объекта с именем: ObjectIt.
Моя проблема в том, что когда я касаюсь квадрата в симуляторе, он не соответствует нужному месту. Некоторые люди говорили мне о проблеме со значением float или open gl, но я нуб, мне нужны четкие ответы.
Это мой код:
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"touch detect");
CCNode* node = [self getChildByTag:TileMapNode];
NSAssert([node isKindOfClass:[CCTMXTiledMap class]], @"not a CCTMXTiledMap");
CCTMXTiledMap* tileMap = (CCTMXTiledMap*)node;
// Get the position in tile coordinates from the touch location
CGPoint touchLocation = [self locationFromTouches:touches];
CGPoint tilePos = [self tilePosFromLocation:touchLocation tileMap:self.tileMap];
// Check if the touch was on water (e.g., tiles with isWater property)
bool isTouchOnWater = NO;
CCTMXObjectGroup* objectLayer = [tileMap objectGroupNamed:@"ObjectIt"];
bool isTouchInRectangle = NO;
int numObjects = [objectLayer.objects count];
for (int i = 0; i < numObjects; i++)
{
NSDictionary* properties = [objectLayer.objects objectAtIndex:i];
CGRect rect = [self getRectFromObjectProperties:properties tileMap:tileMap];
if (CGRectContainsPoint(rect, touchLocation))
{
isTouchInRectangle = YES;
break; }
}
if (isTouchInRectangle)
{
NSLog(@"TOUCH IN RECTANGLE");
// get the ALGORITH FOR TOWERS
}
}
-
(CGPoint) locationFromTouch:(UITouch*)touch
{
CGPoint touchLocation = [touch locationInView: [touch view]];
return [[CCDirector sharedDirector] convertToGL:touchLocation];
}
-(CGPoint) locationFromTouches:(NSSet*)touches
{
return [self locationFromTouch:[touches anyObject]];
}
-(CGRect) getRectFromObjectProperties:(NSDictionary*)dict
tileMap:(CCTMXTiledMap*)tileMap
{
float x, y, width, height;
x = [[dict valueForKey:@"x"] floatValue] + tileMap.position.x;
y = [[dict valueForKey:@"y"] floatValue] + tileMap.position.y;
width = [[dict valueForKey:@"width"] floatValue];
height = [[dict valueForKey:@"height"] floatValue];
return CGRectMake(x, y, width, height);
}
Это код, я дам вам больше, если вам нужно.
Также: когда я бегу на iPhone, у меня появляются вертикальные черные линии ...