У меня довольно простая анимация с 8 одинаковыми размерами. Я не использую встроенные методы анимации, так как я хочу вручную управлять скоростью анимации «на лету». Я использую предварительно загруженные SKTexture и выполняю [object setTexture: texture]; внутри обновления: currentTime.SKSpriteNode растягивается при ручной анимации текстур
Проблема в том, что иногда текстура действительно искажается/растягивается. После большой отладки я сузил ее, только когда узел неподвижен. В самом деле, если я переместить узел пиксель и переместить его обратно, как это, проблема никогда не происходит:
[self setTexture:texture];
CGPoint currentPosition = self.position;
self.position = CGPointMake(currentPosition.x + 1, currentPosition.y + 1);
self.position = currentPosition;
Это чувствует чрезвычайно Hacky ко мне. Я думаю, что под капотом он запускает перерисовку на родительском узле. Кто-нибудь еще испытал это? У меня есть два основных вопроса. 1) В чем причина? и 2) Как я могу разрешить это, не прибегая к взлому?
Вот нормальный кадр и растянутая версия (прошу прощения за качество, заполнитель искусства ...)
Edit: После нескольких замечаний, я понял, что я забыл что я уменьшил размер узла меньше размера текстуры. Несмотря на то, что текстуры имеют одинаковый размер, применение новой текстуры к узлу с меньшим размером вызывает ошибку.
У других проблем была такая же проблема - это может быть ошибка в SK. Возможно, это исправлено в бета-версии ios 7.1. – LearnCocos2D
Попробуйте добавить [self setSize: texture.size]; –
@ DobroćudniTapir, который работал на меня. Я предпочитаю это. Я масштабировал спрайт вниз, поэтому теперь я просто масштабирую его каждый раз, когда я применяю текстуру. Вы хотите добавить это как ответ, чтобы я мог его принять? – nothappybob