Example #1
0
    //Sets up a beat circle
    void setUpBeatCircle(float standardAngle, int layerID, int i, GameObject maskSprite, GameObject circleSprite)
    {
        float angle = -(standardAngle / 2f) - i * standardAngle + 360;

        float[] triMaskAngles = DrumTrack.maskTriangleLocations(angle, standardAngle);


        GameObject firstTriMask = Instantiate(maskSprite, new Vector3(0, 0, 0), Quaternion.identity);

        firstTriMask.transform.parent   = this.transform;
        firstTriMask.transform.rotation = Quaternion.AngleAxis(triMaskAngles[1], Vector3.forward);
        firstTriMask.transform.GetChild(0).transform.localScale = new Vector3(triMaskAngles[2], 10, 1);
        firstTriMask.transform.GetChild(0).GetComponent <SpriteMask>().frontSortingLayerID = layerID;
        firstTriMask.transform.GetChild(0).GetComponent <SpriteMask>().backSortingLayerID  = layerID;
        firstTriMask.transform.GetChild(0).GetComponent <SpriteMask>().frontSortingOrder   = i;
        firstTriMask.transform.GetChild(0).GetComponent <SpriteMask>().backSortingOrder    = i - 1;

        triangleMasks.Add(firstTriMask);

        GameObject secondTriMask = Instantiate(maskSprite, new Vector3(0, 0, 0), Quaternion.identity);

        secondTriMask.transform.parent   = this.transform;
        secondTriMask.transform.rotation = Quaternion.AngleAxis(triMaskAngles[0], Vector3.forward);
        secondTriMask.transform.GetChild(0).transform.localScale = new Vector3(triMaskAngles[2], 10, 1);
        secondTriMask.transform.GetChild(0).GetComponent <SpriteMask>().frontSortingLayerID = layerID;
        secondTriMask.transform.GetChild(0).GetComponent <SpriteMask>().backSortingLayerID  = layerID;
        secondTriMask.transform.GetChild(0).GetComponent <SpriteMask>().frontSortingOrder   = i;
        secondTriMask.transform.GetChild(0).GetComponent <SpriteMask>().backSortingOrder    = i - 1;

        triangleMasks.Add(secondTriMask);

        //GameObject circleMask = Instantiate(circleMaskSprite, new Vector3(0, 0, 0), Quaternion.identity);

        GameObject beatCircle = Instantiate(circleSprite, new Vector3(0, 0, 0), Quaternion.identity);

        beatCircle.transform.parent = this.transform;
        beatCircle.GetComponent <SpriteRenderer>().sortingLayerID  = layerID;
        beatCircle.GetComponent <SpriteRenderer>().maskInteraction = SpriteMaskInteraction.VisibleOutsideMask;
        beatCircle.GetComponent <SpriteRenderer>().sortingOrder    = i;
        beatCircle.GetComponent <SpriteRenderer>().color           = color;
        float rand = Random.value;

        beatCircle.transform.localScale = new Vector3(rand * 10, rand * 10, 1);
        beatCircles.Add(beatCircle);
        volumeLevels.Add(rand);
    }
Example #2
0
    //Starts the music, method uses line angles in drumTracks to create the correct timings for each beat too
    public void playModeOn(List <GameObject> drums)
    {
        playMode   = true;
        drumTracks = new List <DrumTrack>();
        for (int i = 0; i < drums.Count; i++)
        {
            drumTracks.Add(drums[i].GetComponent <DrumTrack>());
        }


        timeStart    = Time.time;
        previousTime = timeStart;


        beatTimings = new List <List <float> >();
        beatsPlayed = new List <List <bool> >();


        for (int i = 0; i < drumTracks.Count; i++)
        {
            DrumTrack drum = drumTracks[i];

            List <float> drumTimings     = new List <float>();
            List <bool>  drumBeatsPlayed = new List <bool>();

            for (int j = 0; j < drum.getBeats(); j++)
            {
                float timing = drum.getLineAngle(j) / 360f;
                drumTimings.Add(timing);
                drumBeatsPlayed.Add(false);
            }
            drumTimings.Sort();
            beatTimings.Add(drumTimings);
            beatsPlayed.Add(drumBeatsPlayed);
        }
    }
Example #3
0
 public void setUp(DrumTrack d, int b)
 {
     drumTrack = d;
     beatNum   = b;
     dragging  = false;
 }