public void SetPosition(Vector2 position) { this.position = position; gameObj.transform.position = noteMovement.GetPositionOnBag(position); gameObj.transform.eulerAngles = noteMovement.GetRotationOnBag(position); }
public Pad(Vector2 startPosition, Vector2 targetPosition, Vector2 endPosition, GameObject padPrefab, GameObject trackEndPrefab, GameObject trackMiddlePrefab, int trackSegments, noteMovementTest aNoteMovement, float angle, int padIndex) { if (noteMovement == null) { noteMovement = aNoteMovement; } StartPosition = startPosition; TargetPosition = targetPosition; EndPosition = endPosition; PadObject = GameObject.Instantiate(padPrefab); PadObject.name = "Pad " + padIndex; PadObject.transform.position = noteMovement.GetPositionOnBag(TargetPosition); PadObject.transform.eulerAngles = noteMovement.GetRotationOnBag(TargetPosition); //generate light track LightTrack = new GameObject[trackSegments + 1]; float trackAngle = 240 - (padIndex * 60); //track start cap LightTrack[0] = Instantiate(trackEndPrefab); LightTrack[0].transform.position = noteMovement.GetPositionOnBag(startPosition); LightTrack[0].transform.eulerAngles = noteMovement.GetRotationOnBag(StartPosition); LightTrack[0].transform.localEulerAngles = new Vector3(LightTrack[0].transform.localEulerAngles.x, LightTrack[0].transform.localEulerAngles.y, trackAngle); LightTrack[0].transform.parent = PadObject.transform; //track end cap LightTrack[trackSegments] = Instantiate(trackEndPrefab); LightTrack[trackSegments].transform.position = noteMovement.GetPositionOnBag(EndPosition); LightTrack[trackSegments].transform.eulerAngles = noteMovement.GetRotationOnBag(EndPosition); LightTrack[trackSegments].transform.localEulerAngles = new Vector3(LightTrack[trackSegments].transform.localEulerAngles.x, LightTrack[trackSegments].transform.localEulerAngles.y, trackAngle + 180); LightTrack[trackSegments].transform.parent = PadObject.transform; float trackLength = Vector2.Distance(StartPosition, EndPosition); for (int i = 1; i < trackSegments; i++) { LightTrack[i] = Instantiate(trackMiddlePrefab); Vector2 pos = Vector2.Lerp(StartPosition, EndPosition, (float)i / trackSegments); Debug.Log("lerp: " + (float)i / trackSegments); LightTrack[i].transform.position = noteMovement.GetPositionOnBag(pos); LightTrack[i].transform.eulerAngles = noteMovement.GetRotationOnBag(pos); //LightTrack[i].transform.localScale = new Vector3(1, trackLength / trackSegments, 1); LightTrack[i].transform.localEulerAngles = new Vector3(LightTrack[i].transform.localEulerAngles.x, LightTrack[i].transform.localEulerAngles.y, trackAngle); //LightTrack[i].transform.right = Vector3.Normalize(LightTrack[i].transform.position - LightTrack[i-1].transform.position); //LightTrack[i].transform.eulerAngles = noteMovement.GetPreservedRotationOnBag(pos, LightTrack[i].transform.eulerAngles); LightTrack[i].transform.parent = PadObject.transform; } }