void OnTriggerEnter2D(Collider2D other) { FishCatcher fc = other.gameObject.GetComponentInParent <FishCatcher>(); if (fc != null && fc.fishCaught > 0 && other.gameObject.layer != gameObject.layer) { fc.LoseFish(); Invoke("SpawnCaughtFish", 0.1f); } }
GameObject FindClosestFish(GameObject[] fish) { GameObject result = null; float distance; float minimumDistance = Mathf.Infinity; foreach (GameObject fishInstance in fish) { if (fishInstance == null) { break; } FishCatcher fishCatcher = fishInstance.GetComponentInParent <FishCatcher>(); if (fishCatcher != null && fishCatcher.fishCaught > 0) { if (fishCatcher.gameObject.layer == 9) { distance = Mathf.Infinity; } else { distance = Vector3.Distance(fishInstance.transform.position, transform.position) + 1f; } } else { FishAi fishAi = fishInstance.GetComponent <FishAi>(); if (fishAi != null && fishAi.targetedBy != null) { continue; } distance = Vector3.Distance(fishInstance.transform.position, transform.position); } if (distance < minimumDistance) { minimumDistance = distance; result = fishInstance; } } return(result); }