private void SetCoralTransform(GameObject coral, CoralType coralType) { coral.transform.position = GetRandomCoralPosition(); //note: in some cases this uses lastNormal which is the normal from the last time GetRandomCoralPosition was called Vector3 lookDirection; if (coralType.coralDirection == CoralDirections.normal) { lookDirection = lastNormal; } else if (coralType.coralDirection == CoralDirections.up) { lookDirection = Vector3.up; } else { lookDirection = Random.onUnitSphere; } Vector3 lookAtPoint = coral.transform.position - gameObject.transform.position + lookDirection * INFINITY; coral.transform.LookAt(lookAtPoint); if (coralType.coralDirection == CoralDirections.up) { coral.transform.RotateAround(coral.transform.position, Vector3.up, Random.Range(0, 360)); } coral.transform.parent = coralContainer.transform; }
private void MakeCorals() { for (int i = 0; i < coralCount; i++) { CoralType coralType = GetRandomCoralType(); GameObject coral = Instantiate(coralType.prefab) as GameObject; coralCloneCount++; coral.name = "coral " + coralCloneCount; SetCoralTransform(coral, coralType); } }
private CoralType GetRandomCoralType() { int a = Random.Range(0, coralLikelihoodTotal); CoralType coralType = coralTypes [0]; foreach (CoralType ct in coralTypes) { if (a < ct.likelihood) { coralType = ct; break; } a -= ct.likelihood; } return(coralType); }