コード例 #1
0
    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;
    }
コード例 #2
0
    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);
        }
    }
コード例 #3
0
    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);
    }