Поменять тайлсет во время выполнения? TMX Cocos2d-iPhone

Я ныряю и пытаюсь выучить cocos2d. В настоящее время я пытаюсь поменять тайлсет на нажатие кнопки.

Пример: игрок стоит на траве, вы нажимаете кнопку, и набор плиток меняется на текстуру снега.

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

Листы изображения имеют одинаковый размер, с одинаковыми позициями изображения.

Если у кого-то есть какие-либо советы или предложения, я был бы очень признателен:)

1 ответ

Решение

Класс CCTMXLayer, который использует набор плиток, наследуется от CCSpriteBatchNode. Вы можете попытаться отправить CCTMXLayer сообщение setTexture: с текстурой нового набора плиток.

Однако, просто просматривая код, есть области, где это будет проблемой. Например, установка текстуры, безусловно, не изменит текстуру каких-либо плиток, которые в настоящее время являются дочерними узлами пакетного узла, что означает, что они не смогут визуализироваться или что-то рухнет, потому что тогда они будут использовать другую текстуру, чем пакетный узел. Может быть возможно обновить текстуру всех спрайтов в одно и то же время, но я не думаю, что это сработает, потому что, если будет изменен текстурный узел или текстура спрайта, он будет отличаться от текстуры пакетного узла и вызовет ошибку.

Один из возможных способов - удалить весь слой CCTMXLayer и заменить его новым. Однако CCTMXLayer инициализируется со структурами, используемыми только внутри, и по крайней мере некоторые из них могут быть доступны только во время загрузки. Таким образом, в конце концов, вероятно, единственный способ заменить набор плиток в простом cocos2d - это заменить весь узел CCTMXTiledMap, что означает большие издержки для чего-то такого простого.

Конечно, вы можете добавить плитки травы и снега к одному и тому же набору плиток и просто изменить GID плитки, если это все, что вы хотели сделать.

И, как я уже говорил, KoboldTouch позволяет изменять наборы плиток во время выполнения. Сам KoboldTouch использует cocos2d-iphone в качестве средства визуализации.

Другие вопросы по тегам