public void ExtendLine() { GameObject temp; Vector2 pos = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y); float prevPieceX = Vector3.Distance(segments [0].transform.localPosition, segments [1].transform.localPosition); temp = Instantiate(lineSegmentPrefab, pos, Quaternion.identity); temp.GetComponent <LineRenderer> ().sortingLayerName = "Clone Partition"; SegmentCollider segmentVal = temp.GetComponent <SegmentCollider> (); SegmentCollider prevSegment = segments [segments.Count - 1].GetComponent <SegmentCollider> (); temp.SetActive(true); temp.name = "segment_" + (segments.Count - 1); temp.tag = "Number Line Segment"; segmentVal.SetValue((prevSegment.GetNumerator() + 1), prevSegment.GetDenominator()); temp.transform.SetParent(gameObject.transform); // Vector2 locPos = new Vector2(numberLineBounds.center.x - (numberLineBounds.extents.x - (numberLineBounds.extents.x/partitionCount)) + prevPieceX, numberLineBounds.center.y); Vector2 locPos = new Vector2(segments [segments.Count - 1].transform.localPosition.x + prevPieceX, segments [segments.Count - 1].transform.localPosition.y); temp.transform.localPosition = locPos; lineRenderer.SetPosition(1, locPos); segments.Add(temp); }
public void Tick() { var currentSegment = position.CurrentSegment; if (currentSegment == null) { return; } ClosestCollider = currentSegment.GetClosestCollider(PlayerInput.Instance.MouseRayHitPoint.z); }
public void AddSegment(Segment segment) { segments.Add(segment); SegmentCollider segmentCol = Instantiate(segmentPrefab, Vector3.zero, Quaternion.identity, transform); segmentToCol.Add(segment, segmentCol); if (!segmentCols.Contains(segmentCol)) { segmentCols.Add(segmentCol); } segmentCol.Init(segment, self); }
//[InspectorButton("AddCollider")] //public bool addCollider; void AddCollider() { for (int i = 0; i < segments.Count; i++) { if (!segmentToCol.ContainsKey(segments[i])) { SegmentCollider segmentObj = Instantiate(segmentPrefab, Vector3.zero, Quaternion.identity, transform); if (!segmentCols.Contains(segmentObj)) { segmentCols.Add(segmentObj); } segmentObj.Init(segments[i], self); segmentToCol.Add(segments[i], segmentObj); } } }
private void Partition(int partitionCount) { PurgeSegments(); GetSegments(); GameObject temp; Vector2 pos; float prevPieceX = 0f; for (int x = 0; x < partitionCount; x++) { pos = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y); temp = Instantiate(lineSegmentPrefab, pos, Quaternion.identity); temp.GetComponent <LineRenderer> ().sortingLayerName = "Clone Partition"; SegmentCollider segmentVal = temp.GetComponent <SegmentCollider> (); temp.SetActive(true); temp.name = "segment_" + x; temp.tag = "Number Line Segment"; segmentVal.SetValue(x, partitionCount - 1); temp.transform.SetParent(gameObject.transform); Bounds numberLineBounds = gameObject.GetComponent <LineRenderer> ().bounds; // Vector2 locPos = new Vector2(numberLineBounds.center.x - (numberLineBounds.extents.x - (numberLineBounds.extents.x/partitionCount)) + prevPieceX, numberLineBounds.center.y); double currPos = this.gameObject.transform.position.x + prevPieceX; // Vector2 locPos = new Vector2(Mathf.Round(currPos*10f)/10f, numberLineBounds.center.y); Vector2 locPos = new Vector2((float)System.Math.Round(currPos, 2), numberLineBounds.center.y); temp.transform.position = locPos; prevPieceX += (this.lineLength / (partitionCount - 1)); segments.Add(temp); } }
public void Activate(SegmentCollider parentCollider) { isActivated = true; this.parentCollider = parentCollider; transform.SetParent(parentCollider.transform); }