void ApplyRules() { GameObject[] gos; gos = FishManager.allFish; Vector3 Centre = Vector3.zero; Vector3 Avoid = Vector3.zero; float gSpeed = 0.1f; Vector3 goalPos = FishManager.goal; float dist; int groupSize = 0; for (int i = 0; i < gos.Length; i++) { if (gos[i] == this) { continue; } dist = Vector3.Distance(gos[i].transform.position, transform.position); if (dist <= neighbourDistance) { Centre += gos[i].transform.position; groupSize++; if (dist < 1f) { Avoid = Avoid + (transform.position - gos[i].transform.position); } fishMovement anotherFish = gos[i].GetComponent <fishMovement>(); gSpeed = gSpeed + anotherFish.speed; } } if (groupSize > 0) { Centre = Centre / groupSize + (goalPos - transform.position); speed = gSpeed / groupSize; Vector3 dir = (Centre + Avoid) - transform.position; if (dir != Vector3.zero) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), rotationSpeed * Time.deltaTime); } } }
public fishInMouth(fishMovement m, Rigidbody2D r) { movement = m; rb = r; collider = rb.GetComponent <Collider2D>(); }
public fishInMouth(fishMovement m, Rigidbody2D r) { movement = m; rb = r; }