[SOLVED] Why I need to set a variable before getActorLocation?

Don’t know how to explain this in a easy way, I will try.

  1. Game Starts
  2. You execute (white line) “set Posicion Enemiga” wich calls GetActorLocation and stores it.
    01
  3. You execute the Timeline “Movimiento Enemigo”
    02
  4. You execute the “Switch on Movimiento”, which is executed each time the Timeline “Movimiento Enemigo” is updated (basically each tick).
    03
  5. You execute SetActorLocation, wich calls the Add node, wich gets the values from Posicion Enemiga and XMov, YMov and ZMov.

    Notice how I removed the nodes, because in point 5, you are “calling” the set node and timeline node, but not to execute em, you are calling em so they only tell you the values they have stored. While the Add nodes are executed because haven’t got execution pins (white triangles), like would happen with GetActorLocation if it is connected directly.

Then 4, 5 repeat again and again and again with each update of the TimeLine.

I think you speak spanish because the nodes names, so I will try in spanish too:

Los nodos que no tienen el triangulo blanco se ejecutan cuando el nodo con el triangulo blanco al que están conectados se ejecutan. En el primer caso, el “GetActorLocation” se ejecuta/calcula cuando se ejecuta el “Set Posicion Enemiga” y guarda la posición ahí.

Luego los SetActorLocation llaman al nodo Add que se ejecuta, el cual llama al Timeline MovimientoEnemigo pero para obtener los valores de XMov, YMov y ZMov y al nodo Set Posicion Enemiga, pero no para ejecutarlo y que se vuelva a guardar la posición del actor, solamente para que le diga el valor que tiene guardado, que es la posición del actor cuando empezó el juego.

Si no pones el Set Posicion Enemiga, lo que pasará es que el SetActorLocation ejecutará el nodo Add, el cual llamará a TimeLine MovimientoEnemigo para obtener sus valores y ejecutará el GetActorLocation para saber donde está el actor, pero como mueves el actor, el GetActorLocation te irá dando la posición que tiene el actor cada vez que se actualize el TimeLine, en lugar de la posición en la que estaba al principio. Por eso se guarda la posición inicial en una variable.

Creo que lo entenderías más facilmente si en lugar de conectar el Set PosicionEnemigo directamente a los nodos Add, rompes la conexión que tienen (las 3 lineas amarillas que van del Set Posicion Enemiga a los 3 nodos Add) y arrastras la variable Posicion Enemigo del panel izquierdo y lo añades con un Get, el cual conectas a los nodos Add.

1 Like