es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Xcode moviendo varios nodos desde la base1 hasta la base2 sin que se apilen uno encima del otro.

Estoy tratando de hacer que múltiples nodos vayan desde el punto A (punto de partida del nodo) hasta el punto B en mi storyboard. Lo logré hacer así:


let action = SKAction.moveBy(x: CGFloat(x), y: CGFloat(y), duration: movementDuration)
self.run(action)

Repito esto para cada Nodo que tengo. El problema es: no puedo ver cuántos nodos envío al punto B porque todos están apilados uno encima del otro, por lo que parece que es solo un Nodo.

Esos nodos representan una unidad en un ejército, yendo de un punto A a B.

Me preguntaba si había una manera de no tenerlos apilados uno encima del otro, de modo que si envío 5 nodos vea 5 unidades y no solo una (tal vez teniendo una ruta no lineal (curva) que sea diferente para cada uno?).

Gracias por tu ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay varias formas de evitar que los nodos se acumulen uno encima del otro cuando se mueven desde un punto A hacia un punto B:

    1. Dar a cada nodo una posición de inicio diferente: En lugar de hacer que todos los nodos comiencen en el mismo punto, puedes dar a cada nodo una posición de inicio ligeramente diferente. Esto asegurará que no todos terminen en el mismo punto cuando se muevan hacia el punto B.
    2. Usar una variable de espaciado: Puedes agregar una variable de espaciado que determine la distancia entre cada nodo. De esta manera, cuando muevas los nodos hacia el punto B, se distribuirán uniformemente a lo largo del camino.

    3. Usar diferentes caminos para cada nodo: Para hacer que el movimiento sea más interesante, puedes crear diferentes caminos para que siga cada nodo. Puedes usar el método SKAction.follow(_: asOffset: orientToPath: duration:) para crear un camino curvo que sea único para cada nodo.

    Aquí hay un ejemplo de cómo puedes implementar la variable de espaciado:

    let spacing: CGFloat = 10 // Establece el espaciado entre nodos
    var yOffset: CGFloat = 0 // Establece el desplazamiento inicial en Y
    
    for node in nodes {
        let action = SKAction.moveBy(x: CGFloat(x), y: CGFloat(y) + yOffset, duration: movementDuration)
        node.run(action)
        yOffset += spacing
    }
    

    En este ejemplo, cada nodo se moverá la misma cantidad en x e y, pero el valor de y se incrementará por la variable de espaciado para cada nodo. Esto asegurará que cada nodo termine en un punto diferente a lo largo del eje y.

    ¡Espero que esto ayude! Avísame si tienes alguna otra pregunta.

Comments are closed.