2015-02-28 7 views
1

Я только что создал функцию, которая создает объект в области касания пользователя, но я хочу, чтобы он был выровнен по центру с центром плиток в соответствии с моей плиточной картой.Как получить ближайшую плитку от прикосновения с помощью JSTileMap swift

Прямо сейчас, я могу разместить объекты только в своем месте контакта, а не автоматически перенаправлять их на ближайшую плиту.

http://puu.sh/ggxOG/2785a2eeca.png (Это как мои плитки выглядеть 32х32)

JSTileMap функции

@class JSTileMap; 

@interface TMXLayer : SKNode 
@property (strong, nonatomic) TMXLayerInfo* layerInfo; 
@property (strong, nonatomic) NSMutableSet* tileInfo; // contains TMXTilesetInfo objects 
@property (assign, nonatomic) CGSize mapTileSize; 

/** Returns the width of the layer (layerGridSize.width * mapTileSize.width) */ 
@property (readonly,nonatomic) CGFloat layerWidth; 

/** Returns the height of the layer (layerGridSize.height * mapTileSize.height) */ 
@property (readonly,nonatomic) CGFloat layerHeight; 

/** Returns the JSTileMap that contains this layer */ 
@property (weak, nonatomic) JSTileMap* map; 

- (CGPoint)pointForCoord:(CGPoint)coord; 
- (CGPoint)coordForPoint:(CGPoint)point; 

- (void)removeTileAtCoord:(CGPoint)coord; 
- (SKSpriteNode*)tileAt:(CGPoint)point; 
- (SKSpriteNode*)tileAtCoord:(CGPoint)coord; 
- (int)tileGidAt:(CGPoint)point; 
- (id)propertyWithName:(NSString*)name; 
- (NSDictionary*)properties; 

@end 

ответ

1

Я решил эту проблему таким образом, чтобы получить ближайшую плитку.

var layer: TMXLayer = map.layerNamed("World1") // retrieve layer from tiled map 
if let object = layer.tileAt(location) { // if there is a sprite(tile) at that position then set it as a var 
position = object.position // update position var to the position of the sprite 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^