ios animation sprite-kit stretch

ios - SKSpriteNode que se extiende al animar texturas manualmente



animation sprite-kit (1)

Parece que al establecer la textura usando setTexture: el nodo sprite no cambia su tamaño, hasta que se mueve, cambia de tamaño, etc.

Puede resolver esto configurando manualmente el tamaño después de configurar la textura.

[spriteNode setTexture:texture]; [spriteNode setSize:texture.size];

Tengo una animación bastante simple con 8 imágenes de tamaño idéntico. No estoy utilizando los métodos de animación integrados ya que quiero controlar manualmente la velocidad de la animación sobre la marcha. Estoy usando SKTexture precargado y haciendo [object setTexture: texture]; dentro de la actualización: método currentTime.

El problema es que a veces la textura se distorsiona / estira mucho. Después de una gran cantidad de depuración, lo he reducido a solo ocurriendo cuando el nodo está estacionario. De hecho, si muevo el nodo un píxel y lo muevo hacia atrás de esta manera, el problema nunca ocurre:

[self setTexture:texture]; CGPoint currentPosition = self.position; self.position = CGPointMake(currentPosition.x + 1, currentPosition.y + 1); self.position = currentPosition;

Esto se siente extremadamente raro para mí. Creo que bajo el capó, está desencadenando un redibujado en el nodo padre. Alguien más ha experimentado esto? Tengo dos preguntas principales. 1) ¿Cuál es la causa? y 2) ¿Cómo puedo resolver esto sin recurrir a un truco?

Aquí hay un marco normal y una versión estirada (me disculpo por la calidad, el arte del marcador de posición ...)

Editar: Después de algunos comentarios, me di cuenta de que olvidé mencionar que escalé el tamaño del nodo más pequeño que el tamaño de la textura. Aunque las texturas son del mismo tamaño, la aplicación de una textura nueva a un nodo con un tamaño más pequeño provoca el error.