public void DoYourThing() { Nodo partida = grafoActual.darNodoContenedor(agent.transform.position); Nodo destino = grafoActual.darNodoContenedor(target.transform.position); camino = A.Ejecutar(partida, destino, grafoActual); for (int j = 0; j < (camino.Count - 1); j = j + 1) { Debug.DrawLine(new Vector3((float)camino[j].GetCentro.Item1, (float)camino[j].GetCentro.Item2, 0), new Vector3((float)camino[j + 1].GetCentro.Item1, (float)camino[j + 1].GetCentro.Item2, 0)); } foreach (Nodo n in grafoActual.GetListaNodos()) { Debug.DrawLine(new Vector3((float)n.GetPrimerVertice().Item1, (float)n.GetPrimerVertice().Item2, 0), new Vector3((float)n.GetSegundoVertice().Item1, (float)n.GetSegundoVertice().Item2, 0)); Debug.DrawLine(new Vector3((float)n.GetSegundoVertice().Item1, (float)n.GetSegundoVertice().Item2, 0), new Vector3((float)n.GetTercerVertice().Item1, (float)n.GetTercerVertice().Item2, 0)); Debug.DrawLine(new Vector3((float)n.GetPrimerVertice().Item1, (float)n.GetPrimerVertice().Item2, 0), new Vector3((float)n.GetTercerVertice().Item1, (float)n.GetTercerVertice().Item2, 0)); } if (arrived) { if (!partida.Equals(destino)) { arrived = false; } else { dac = new dArriveComp(agent, target.transform.position, maxA, maxS, targetR, slowR, timeToT); dac.doYourThing(); } } if (camino.Count <= actual) { actual = 0; } if ((agent.transform.position.x - 0.3 <= camino[actual].GetCentro.Item1 && camino[actual].GetCentro.Item1 <= agent.transform.position.x + 0.3) && (agent.transform.position.y - 0.3 <= camino[actual].GetCentro.Item2 && camino[actual].GetCentro.Item2 <= agent.transform.position.y + 0.3) && actual != (camino.Count - 1)) { actual = actual + 1; } if (camino.Count <= actual) { actual = 0; } if (partida.Equals(destino)) { dac = new dArriveComp(agent, target.transform.position, maxA, maxS, targetR, slowR, timeToT); dac.doYourThing(); // dsc = new dSeekComp(agent, target.transform.position, maxA, Vector3.zero); // dsc.doYourThing(); arrived = true; } else { if (camino[actual].GetAltura() > partida.GetAltura()) { agent.transform.position += new Vector3(0, 0, 0.01f); agent.transform.localScale += new Vector3(Math.Abs(agent.transform.position.z) * 0.005f, Math.Abs(agent.transform.position.z) * 0.005f, 0); } else if (camino[actual].GetAltura() < partida.GetAltura()) { agent.transform.position -= new Vector3(0, 0, 0.01f); agent.transform.localScale -= new Vector3(Math.Abs(agent.transform.position.z) * 0.005f, Math.Abs(agent.transform.position.z) * 0.005f, 0); } else if ((camino[actual].GetAltura() == 0) && (partida.GetAltura() == 0)) { agent.transform.position = new Vector3(agent.transform.position.x, agent.transform.position.y, 0); agent.transform.localScale = agent.GetInitialScale(); } Vector3 objetivoActual = new Vector3((float)camino[actual].GetCentro.Item1, (float)camino[actual].GetCentro.Item2, 0); dac = new dArriveComp(agent, objetivoActual, maxA, maxS, targetR, slowR, timeToT); dac.doYourThing(); } }
void Update() { dArrive.doYourThing(); }