//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); }
//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); } }
public void setUp(DrumTrack d, int b) { drumTrack = d; beatNum = b; dragging = false; }