Esempio n. 1
0
    public void OnDrawGizmos()
    {
        Vector3[] arcGizmo = new Vector3[4];

        float objectX = transform.position.x;
        float objectY = transform.position.y;
        float objectZ = transform.position.z;


        switch (coinLineRefraction)
        {
        case CoinLineRefraction.None:

            arcGizmo[0] = new Vector3(objectX, objectY, objectZ);
            arcGizmo[1] = new Vector3(objectX, objectY, objectZ + (length / 3.0f) * 1.0f);
            arcGizmo[2] = new Vector3(objectX, objectY, objectZ + (length / 3.0f) * 2.0f);
            arcGizmo[3] = new Vector3(objectX, objectY, objectZ + (length / 3.0f) * 3.0f);

            break;

        case CoinLineRefraction.LeftStraight:

            arcGizmo[0] = new Vector3(objectX, objectY, objectZ);
            arcGizmo[1] = new Vector3(objectX + -0.6f, objectY, objectZ + (length / 3.0f) * 1.0f);
            arcGizmo[2] = new Vector3(objectX + -6.0f, objectY, objectZ + (length / 3.0f) * 2.0f);
            arcGizmo[3] = new Vector3(objectX + -6.06f, objectY, objectZ + (length / 3.0f) * 3.0f);

            break;

        case CoinLineRefraction.RightStraight:

            arcGizmo[0] = new Vector3(objectX, objectY, objectZ);
            arcGizmo[1] = new Vector3(objectX + 0.6f, objectY, objectZ + (length / 3.0f) * 1.0f);
            arcGizmo[2] = new Vector3(objectX + 6.0f, objectY, objectZ + (length / 3.0f) * 2.0f);
            arcGizmo[3] = new Vector3(objectX + 6.06f, objectY, objectZ + (length / 3.0f) * 3.0f);

            break;

        case CoinLineRefraction.LeftCurved:

            arcGizmo[0] = new Vector3(objectX, objectY, objectZ);
            arcGizmo[1] = new Vector3(objectX + -6.0f, objectY, objectZ + (length / 3.0f) * 1.0f);
            arcGizmo[2] = new Vector3(objectX + -6.0f, objectY, objectZ + (length / 3.0f) * 2.0f);
            arcGizmo[3] = new Vector3(objectX, objectY, objectZ + (length / 3.0f) * 3.0f);

            break;

        case CoinLineRefraction.RightCurved:

            arcGizmo[0] = new Vector3(objectX, objectY, objectZ);
            arcGizmo[1] = new Vector3(objectX + 6.0f, objectY, objectZ + (length / 3.0f) * 1.0f);
            arcGizmo[2] = new Vector3(objectX + 6.0f, objectY, objectZ + (length / 3.0f) * 2.0f);
            arcGizmo[3] = new Vector3(objectX, objectY, objectZ + (length / 3.0f) * 3.0f);

            break;
        }


        ThunderTween.DrawPath(arcGizmo, Color.black);
        Gizmos.color = Color.yellow;

        int   coinCount      = (int)Mathf.Round(length / coinSpacing);
        float perIncrement   = 1.0f / coinCount;
        float currentPercent = perIncrement;

        // First Coint
        Gizmos.DrawSphere(ThunderTween.PointOnPath(arcGizmo, 0), 1f);

        // Path Coins
        for (int i = 0; i < coinCount; i++)
        {
            Vector3 coinPos = ThunderTween.PointOnPath(arcGizmo, currentPercent);
            currentPercent += perIncrement;
            Gizmos.DrawSphere(coinPos, 1f);
        }
    }