2015-05-21 3 views
0

Я разрабатываю мини-игру, и я нарисовал карту, используя программу Tiled. Предположим, что я использовал набор треков из трех картин; как мне «преобразовать» их в SKSpriteNodes? Предположим, что есть одна плитка, представляющая характер и три плитки, представляющие землю. Я хочу, чтобы эти четыре были узлами спрайтов.Преобразование плиток для спрайтов в XCode Swift

Заранее спасибо

+0

Вы спрашиваете, как разместить эти изображения на экране? – sangony

+0

Нет, они появляются на экране при загрузке tilemap. Но то, что я прошу, это то, что, например, у меня есть символ на экране (из файла tilemap.tmx), который я хочу сделать с помощью таких файлов, как SKActions. Как я могу «преобразовать» все типы единиц в SKSpriteNodes? Предположим, что у меня есть персонаж 1 игрока и 3 монстра в моем слое. Я хочу, чтобы они были SKSpriteNodes, поэтому я могу взаимодействовать с ними с действиями. – toom4ny

+0

Чтобы упомянуть, я использовал разные слои. Поэтому всякий раз, когда я помещаю персонажа, я назвал его «Боб» в моем tilemap (используя программу Tiled). Может быть, это поможет мне, но я понятия не имею. – toom4ny

ответ

1

Я не могу помочь вам с Swift версии, но посмотрите на фотографии ниже, чтобы получить лучшее понимание того, что я имею в виду.

Создание слоя объекта в плитке.

enter image description here

Создание объектов в вашей карте и назовите их.

enter image description here

Я предполагаю, что вы используете приложение Плиточные создавать свои карты. Вы можете создать слой объекта для своей карты в приложении Tiled. После этого просто создайте на карте различные объекты. Например, создайте несколько объектов под названием «враг». Этот слой будет читаться JSTileMap и будет доступен вам в вашем коде:

TMXObjectGroup *group = [tiledMap groupNamed:@"objectLayer"]; 
// make sure the you use the same groupNamed as is in your map! 

NSArray *floorObjects = [group objectsNamed:@"enemy"]; 
    for (NSDictionary *floorObj in floorObjects) 
    { 
     CGFloat x = [floorObj[@"x"] floatValue]; 
     CGFloat y = [floorObj[@"y"] floatValue]; 
     CGFloat w = [floorObj[@"width"] floatValue]; 
     CGFloat h = [floorObj[@"height"] floatValue]; 

     // create your SKSpriteNode here 
     // use the x, y as the node's position in the map 
     // myNode.position = CGPointMake(x, y); 
    } 
+0

Да, я использую приложение Tiled :) Но я использую быстрый и не объективный-c Я сделал это до сих пор: var group = TMXObjectGroup(), а позже в моем коде я попытался назначить его как: group = tileMap .groupNamed ("Боб"). Это приводит к сбою приложения и говорит следующее: «Неустранимая ошибка: неожиданно найденный nil при развертывании необязательного значения» – toom4ny

+0

Я использовал имя Bob как имя слоя для символа в приложении Tiled. Я не знаю, пропал ли я что-то или если я полностью неправильно понял ваш ответ, поскольку я не знаком с объективом-c – toom4ny

+0

А я использовал слой плитки, а не слой объекта! Я создал слой объекта теперь в Tiled. Но как мне поместить мои рисунки из слоя плитки Боба в новый слой созданного объекта? Я установил поле, в котором персонаж, возможно, это то, что вы показали. Теперь это не сбой. Я попытаюсь создать комплект спрайтов и попробовать действия. Спасибо, что я вернусь с ответом в ближайшее время, будет ли он полностью работать :) – toom4ny

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