void LidarLine2::set(const Line2& line) { Vector2d normal = line.getNormal(); l = abs(line.getC() / normal.getLength()); normal *= -line.getC(); alpha = normal.getAngle2D(); }
void ComponentSteering::update() { if(!isReached) { if(targetObject != NULL) { if(targetObject->isDead()) { targetObject = NULL; target = target - parent->position; target.normalize(); target *= 10000; //Deberian seguir en linea recta } else { target = targetObject->position; } } Vector2d movement; if(leader) { /*for(unsigned int i=0;i<mainPlayers.size();i++) { movement += evade(mainPlayers[i]); }*/ movement += arrive(this->target); move(movement); Vector2d distanceVector = this->target - parent->position; // Vector2d te permite calcular las distancias float distance = distanceVector.getLength(); // Entra en el rango del objetivo if(distance < 5) { isReached = true; Message message; message.type = Message::TARGET_REACHED; parent->broadcastMessage(message); } } } }