如何使用 JSTileMap 从触摸中获取最近的图块 swift
How to get nearest tile from touch with JSTileMap swift
我刚刚创建了一个在用户触摸位置创建对象的函数,但我希望它根据我的平铺地图自动与平铺的中心对齐。
现在,我只能将对象放在我的触摸位置,而不是自动将其重定向到最近的图块。
http://puu.sh/ggxOG/2785a2eeca.png(这是我的瓷砖 32x32 的样子)
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
我用这种方法解决了这个问题以获得最近的瓷砖。
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
}
我刚刚创建了一个在用户触摸位置创建对象的函数,但我希望它根据我的平铺地图自动与平铺的中心对齐。
现在,我只能将对象放在我的触摸位置,而不是自动将其重定向到最近的图块。
http://puu.sh/ggxOG/2785a2eeca.png(这是我的瓷砖 32x32 的样子)
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
我用这种方法解决了这个问题以获得最近的瓷砖。
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
}