public LiftedObjectsGroup(LiftedObject liftedObject) { objectMass = liftedObject.liftedRb.mass; liftedObjects = new List <LiftedObject>(); liftedObjects.Add(liftedObject); }
private void GetRigidbodiesToLaunch() { // Recordar que la lista de objetos enganchados tendrá que estar limpia liftedObjects.Clear(); // List <LiftedObjectsGroup> liftedGroups = new List <LiftedObjectsGroup>(4); // TODO: Mover al radio a variable pública float rangeToUse = 1500; Collider[] possibleBodies = Physics.OverlapSphere(transform.position, rangeToUse); //Debug.Log("" + possibleBodies.Length + " possible bodies"); // for (int i = 0; i < possibleBodies.Length; i++) { // Primero que tenga esta tag // Igual usamos la de enemigo también (cuidado no atrapar a los que está vivos) if (possibleBodies[i].tag == "Hard Terrain") { // Luego que tenga rigidbody Rigidbody possibleRb = possibleBodies[i].GetComponent <Rigidbody>(); if (possibleRb != null) { // accumulatedLiftMass += possibleRb.mass; // LiftedObject newLiftedObject = new LiftedObject(possibleRb, possibleRb.position, possibleRb.position + (Vector3.up * 500), possibleRb.rotation); // Vamos a ver que grupo le toca float objectMass = possibleRb.mass; LiftedObjectsGroup possibleExistantGroup = liftedGroups.Find(x => x.objectMass == objectMass); if (liftedGroups.Count == 0 || possibleExistantGroup == null) { liftedGroups.Add(new LiftedObjectsGroup(newLiftedObject)); // TODO: Meter aquí las separaciones personalizadas switch (objectMass) { // Columnas de hueso case 1: liftedGroups[liftedGroups.Count - 1].spaceBetweenObjects = 2f; break; // Pedrolos grodos case 100: liftedGroups[liftedGroups.Count - 1].spaceBetweenObjects = 25; break; // Otros (Ya iremos probando) default: liftedGroups[liftedGroups.Count - 1].spaceBetweenObjects = 15; break; } } else if (!possibleExistantGroup.full) { possibleExistantGroup.liftedObjects.Add(newLiftedObject); // if (possibleExistantGroup.GroupMass >= TotalLiftForce) { possibleExistantGroup.full = true; // Salimos del for si todos los grupos están llenos if (CheckIfAllGroupsAreFull(liftedGroups)) { continue; } } } // //liftedObjects.Add(newLiftedObject); // //if (accumulatedLiftMass >= TotalLiftForce) //{ // // // //Debug.Log("Lifting " + liftedObjects.Count + " objects with a total accumulated mass of" + accumulatedLiftMass); // accumulatedLiftMass = 0; // return; //} } } } // Y decidimos que grupo tiene más chicha float maxMass = 0; for (int i = 0; i < liftedGroups.Count; i++) { if (liftedGroups[i].GroupMass > maxMass) { liftedObjects = liftedGroups[i].liftedObjects; spaceBetweenObjectsToUse = liftedGroups[i].spaceBetweenObjects; } } // Y habrá que reajustar la matriz de lifting InitializePreLaunchPositionsListMatrix(); }