/// <summary> /// Update this instance. /// </summary> void Update() { if (!isMouseHeld) { // Mouse button pressed - record the start position and enable the line renderer if (Input.GetMouseButton(0)) { cutStartPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); cutStartPosition.z = 0.0f; isMouseHeld = true; lineRenderer.SetPosition(0, cutStartPosition); lineRenderer.SetPosition(1, cutStartPosition); lineRenderer.enabled = true; } } else { // Mouse button being held down - update the line renderer Vector3 cutEndPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); cutEndPosition.z = 0.0f; lineRenderer.SetPosition(1, cutEndPosition); // Mouse button released - cut! if (!Input.GetMouseButton(0)) { SpriteSlicer2D.SliceAllSprites(cutStartPosition, cutEndPosition); lineRenderer.enabled = false; isMouseHeld = false; } } }
void FixedUpdate() { if (isChild) { if (rb2d.velocity.magnitude < .1 && rb2d.velocity.magnitude > 0) { rb2d.velocity = Vector2.zero; } else if (rb2d.velocity.magnitude != 0) { rb2d.velocity *= .5f; } m_Timer += Time.deltaTime; if ((m_Timer - m_FadeDelay) >= m_FadeTime) { if (numCuts < 5) { rb2d.isKinematic = false; SpriteSlicer2D.ExplodeSprite(gameObject, 1, 20); } else { Destroy(this.gameObject); } } } }
public void MakeCut(int rc, Vector3 dir) { didCut = true; DrawLine(rc, dir); collider.enabled = true; draw = false; GameManager.Instance.cutStart = array[0]; GameManager.Instance.cutEnd = array[1]; GameManager.Instance.direction = direction; GameManager.Instance.cutOrigin = transform.position; GameManager.Instance.cutSpeed = cutSpeed * reverseCut; if (LINE_MODE == LineMode.active) { List <SpriteSlicer2DSliceInfo> sliceInfo = new List <SpriteSlicer2DSliceInfo>(); SpriteSlicer2D.SliceAllSprites(array[0], array[1], false, ref sliceInfo, mask); for (int i = 0; i < objects.Length; i++) { Vector3 point = objects[i].transform.position; if (((point.x - array[0].x) * (array[1].y - array[0].y) - (point.y - array[0].y) * (array[1].x - array[0].x)) < 0) { objects[i].GetComponent <Split>().isRight = true; } } } }
public void OnCollisionEnter2D(Collision2D col) { if (col.relativeVelocity.magnitude > breakingForce) { SpriteSlicer2D.ExplodeSprite(gameObject, Random.Range(minimumBreaks, maximumBreaks), col.relativeVelocity.magnitude / 2f); } }
public void cutPacks() { if (inScaling || inBoosterMove || notInZone) { return; } if (currentPack == 0 && deck.bankAmount < 10 || currentPack == 1 && deck.bankAmount < 8 || currentPack == 2 && deck.bankAmount < 11) { return; } deck = GameObject.Find("Deck").GetComponent <DeckScript>(); mousePos = Input.mousePosition; mousePos.z = startPositionPack.z; Vector3 currentMousePosition = Camera.main.ScreenToWorldPoint(mousePos); if (Input.GetMouseButton(0)) { if (!mousePressed) { mouseStartPosition = currentMousePosition; } Debug.DrawLine(mouseStartPosition, currentMousePosition, Color.red); mousePressed = true; } else if (mousePressed) { SpriteSlicer2D.SliceAllSprites(mouseStartPosition, currentMousePosition, false, ref cuts); mousePressed = false; } }
void CutThis() { if (currentpointNum >= 2) { Vector3 worldPosStart = WorldMousePositions[currentpointNum - 2]; Vector3 worldPosEnd = WorldMousePositions[currentpointNum - 1]; SpriteSlicer2D.SliceAllSprites(worldPosStart, worldPosEnd); } }
private void ExplodeSlices() { foreach (SpriteSlicer2DSliceInfo sliceInfo in ObjectSlicer.Instance.SlicedSpriteInfo) { sliceInfo.ChildObjects.RemoveAll(item => item == null); foreach (GameObject slice in sliceInfo.ChildObjects) { slice.GetComponent <Rigidbody2D>().mass = 0; // Set mass of each slicing object to 0 in order to apply less force SpriteSlicer2D.ExplodeSprite(slice, 10, 1); // Explode the slices because its fun :D } } }
void Update() { //player 1 pass //if (Input.GetKeyDown(thisKey)) //{ // //Destroy(collidedObj[0]); // collidedObj[0].layer = 8; // collidedObj[0].GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.None; // SpriteSlicer2D.ExplodeSprite(collidedObj[0], 8, 500.0f); // soundSource.clip = destroyClip; // soundSource.Play(); // player1Count++; // Debug.Log("Run 1"); //} //player2 pass if (Input.GetKeyDown(thisKey2)) { //Destroy(collidedObj2[0]); collidedObj2[0].layer = 8; collidedObj2[0].GetComponent <Rigidbody2D>().constraints = RigidbodyConstraints2D.None; SpriteSlicer2D.ExplodeSprite(collidedObj2[0], 8, 500.0f); soundSource.clip = destroyClip; soundSource.Play(); player2Count++; Debug.Log("Run 2"); } //player 1 fail //else if ((!Input.GetKeyDown(thisKey)) && (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.W))) //{ // soundSource.clip = missClip; // soundSource.Play(); // player1Count--; // Debug.Log("Run 3"); // print("This Key at run 3 =" + thisKey); //} ////player 2 fail else if ((!Input.GetKeyDown(thisKey2)) && (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.UpArrow))) { soundSource.clip = missClip; soundSource.Play(); player2Count--; Debug.Log("Run 4"); } //else //{ // //donothing //} ////gameScore = player2Count - player1Count; ////print(gameScore); }
private void Slice() { // Slicing the sprite requirs 2 vectors which are NOT on/over the sprite // Thats why we calculate a offset for the start position Vector2 elevatedStartPos = _startPos - _endPos; elevatedStartPos.Normalize(); _startPos += elevatedStartPos; int sliceCount = SlicedSpriteInfo.Count; SpriteSlicer2D.SliceAllSprites(_startPos, _endPos, false, ref SlicedSpriteInfo, "Slice"); // Play slicing sound if (sliceCount != SlicedSpriteInfo.Count) { SoundManager.Instance.PlayRandomSound(); } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "People") { print("Trigger people!"); SpriteSlicer2D.ExplodeSprite(collision.GetComponent <Rigidbody2D>().gameObject, 5, 25.0f, true, ref SpriteSlicer2DDemoManager.m_SlicedSpriteInfo); // If we've chosen to fade out fragments once an object is destroyed, add a fade and destroy component for (int spriteIndex = 0; spriteIndex < SpriteSlicer2DDemoManager.m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { if (!SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <Rigidbody2D>().isKinematic) { SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].layer = LayerMask.NameToLayer("Apple"); SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].AddComponent <FadeAndDestroy>(); } } } SpriteSlicer2DDemoManager.m_SlicedSpriteInfo.Clear(); } Destroy(this.gameObject); }
/// <summary> /// Update this instance. /// </summary> void Update() { if (Input.GetMouseButtonDown(0)) { startCut = DrawLine.CuttingStartPosition; } if (Input.GetMouseButtonUp(0)) { endCut = DrawLine.CuttingEndPosition; } // Right mouse button - explode any sprite the we click on if (Input.GetMouseButtonDown(0) && (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.LeftAlt))) { Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); mouseWorldPosition.z = Camera.main.transform.position.z; RaycastHit2D rayCastResult = Physics2D.Raycast(mouseWorldPosition, new Vector3(0, 0, 0), 0.0f); if (rayCastResult.rigidbody) { if (Input.GetKey(KeyCode.LeftControl)) { SpriteSlicer2D.ExplodeSprite(rayCastResult.rigidbody.gameObject, 16, 100.0f, true, ref m_SlicedSpriteInfo); if (m_SlicedSpriteInfo.Count == 0) { // Couldn't cut for whatever reason, add some force anyway rayCastResult.rigidbody.AddForce(new Vector2(0.0f, 400.0f)); } } } } // Left mouse button - hold and swipe to cut objects else if (Input.GetMouseButton(0)) { bool mousePositionAdded = false; m_MouseRecordTimer -= Time.deltaTime; // Record the world position of the mouse every x seconds if (m_MouseRecordTimer <= 0.0f) { MousePosition newMousePosition = new MousePosition(); newMousePosition.m_WorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newMousePosition.m_Time = Time.time; m_MousePositions.Add(newMousePosition); m_MouseRecordTimer = m_MouseRecordInterval; mousePositionAdded = true; // Remove the first recorded point if we've recorded too many if (m_MousePositions.Count > m_MaxMousePositions) { m_MousePositions.RemoveAt(0); } } // Forget any positions that are too old to care about if (m_MousePositions.Count > 0 && (Time.time - m_MousePositions[0].m_Time) > m_MouseRecordInterval * m_MaxMousePositions) { m_MousePositions.RemoveAt(0); } // Go through all our recorded positions and slice any sprites that intersect them } if (m_TrailRenderer) { Vector3 trailPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); trailPosition.z = -9.0f; m_TrailRenderer.transform.position = trailPosition; } else if (Input.GetMouseButtonUp(0)) { for (int loop = 0; loop < m_MousePositions.Count - 1; loop++) { SpriteSlicer2D.SliceAllSprites(m_MousePositions[loop].m_WorldPosition, m_MousePositions[m_MousePositions.Count - 1].m_WorldPosition, true, ref m_SlicedSpriteInfo); if (m_SlicedSpriteInfo.Count > 0) { // Add some force in the direction of the swipe so that stuff topples over rather than just being // sliced but remaining stationary for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { Vector2 sliceDirection = m_MousePositions[m_MousePositions.Count - 1].m_WorldPosition - m_MousePositions[loop].m_WorldPosition; sliceDirection.Normalize(); m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <Rigidbody2D>().AddForce(sliceDirection * 0.0f); } } m_MousePositions.Clear(); break; } else { m_MousePositions.Clear(); } } /* * // Left mouse button - hold and swipe to cut objects * else if (Input.GetKeyDown(KeyCode.C)) * { * bool mousePositionAdded = false; * * MousePosition newMousePosition = new MousePosition(); * newMousePosition.m_WorldPosition = startCut; * m_MousePositions.Add(newMousePosition); * * MousePosition newMousePosition2 = new MousePosition(); * newMousePosition2.m_WorldPosition = endCut; * m_MousePositions.Add(newMousePosition2); * * * mousePositionAdded = true; * * * // Forget any positions that are too old to care about * if (m_MousePositions.Count > 0 && (Time.time - m_MousePositions[0].m_Time) > m_MouseRecordInterval * m_MaxMousePositions) * { * m_MousePositions.RemoveAt(0); * } * * // Go through all our recorded positions and slice any sprites that intersect them * if (mousePositionAdded) * { * for (int loop = 0; loop < m_MousePositions.Count - 1; loop++) * { * SpriteSlicer2D.SliceAllSprites(m_MousePositions[loop].m_WorldPosition, m_MousePositions[m_MousePositions.Count - 1].m_WorldPosition, true, ref m_SlicedSpriteInfo); * * if (m_SlicedSpriteInfo.Count > 0) * { * // Add some force in the direction of the swipe so that stuff topples over rather than just being * // sliced but remaining stationary * for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) * { * for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) * { * Vector2 sliceDirection = m_MousePositions[m_MousePositions.Count - 1].m_WorldPosition - m_MousePositions[loop].m_WorldPosition; * sliceDirection.Normalize(); * m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent<Rigidbody2D>().AddForce(sliceDirection * 500.0f); * } * } * * m_MousePositions.Clear(); * break; * } * } * } * * if (m_TrailRenderer) * { * Vector3 trailPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); * trailPosition.z = -9.0f; * m_TrailRenderer.transform.position = trailPosition; * } * } * else * { * m_MousePositions.Clear(); * } */ // Sliced sprites sharing the same layer as standard Unity sprites could increase the draw call count as // the engine will have to keep swapping between rendering SlicedSprites and Unity Sprites.To avoid this, // move the newly sliced sprites either forward or back along the z-axis after they are created for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { Vector3 spritePosition = m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].transform.position; spritePosition.z = -1.0f; m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].transform.position = spritePosition; } } if (m_FadeFragments) { // If we've chosen to fade out fragments once an object is destroyed, add a fade and destroy component for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { if (!m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <Rigidbody2D>().isKinematic) { m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].AddComponent <FadeAndDestroy>(); } } } } m_SlicedSpriteInfo.Clear(); } }
/// <summary> /// Update this instance. /// </summary> void Update() { // Right mouse button - explode any sprite the we click on if (Input.GetMouseButtonDown(0) && (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.LeftAlt))) { Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); mouseWorldPosition.z = Camera.main.transform.position.z; RaycastHit2D rayCastResult = Physics2D.Raycast(mouseWorldPosition, new Vector3(0, 0, 0), 0.0f); if (rayCastResult.rigidbody) { if (Input.GetKey(KeyCode.LeftControl)) { if (m_SlicedSpriteInfo.Count == 0) { // Couldn't cut for whatever reason, add some force anyway rayCastResult.rigidbody.AddForce(new Vector2(0.0f, 400.0f)); } } } } // Left mouse button - hold and swipe to cut objects else if (Input.GetMouseButton(0)) { bool mousePositionAdded = false; m_MouseRecordTimer -= Time.deltaTime; // Record the world position of the mouse every x seconds if (m_MouseRecordTimer <= 0.0f) { MousePosition newMousePosition = new MousePosition(); newMousePosition.m_WorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newMousePosition.m_Time = Time.time; m_MousePositions.Add(newMousePosition); m_MouseRecordTimer = m_MouseRecordInterval; mousePositionAdded = true; // Remove the first recorded point if we've recorded too many if (m_MousePositions.Count > m_MaxMousePositions) { m_MousePositions.RemoveAt(0); } } // Forget any positions that are too old to care about if (m_MousePositions.Count > 0 && (Time.time - m_MousePositions[0].m_Time) > m_MouseRecordInterval * m_MaxMousePositions) { m_MousePositions.RemoveAt(0); } // Go through all our recorded positions and slice any sprites that intersect them if (mousePositionAdded) { if (sliceCount < 3) { for (int loop = 0; loop < m_MousePositions.Count - 1; loop++) { SpriteSlicer2D.SliceAllSprites(m_MousePositions[loop].m_WorldPosition, m_MousePositions[m_MousePositions.Count - 1].m_WorldPosition, true, ref m_SlicedSpriteInfo); if (m_SlicedSpriteInfo.Count > 0) { // Add some force in the direction of the swipe so that stuff topples over rather than just being // sliced but remaining stationary for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { Vector2 sliceDirection = m_MousePositions[m_MousePositions.Count - 1].m_WorldPosition - m_MousePositions[loop].m_WorldPosition; sliceDirection.Normalize(); //used to be > 500f m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <Rigidbody2D>().AddForce(sliceDirection * 100.0f); GetComponent <AudioSource>().Play(); } } m_MousePositions.Clear(); sliceCount += 1; ScoreManager.count += 1; Debug.Log("slicecount is " + sliceCount); Debug.Log("count is " + ScoreManager.count); if (sliceCount == 1) { nextLevelButton.played = 0; } break; } } } if (sliceCount >= 3) { m_MousePositions.Clear(); addCount += 1; } } if (m_TrailRenderer) { Vector3 trailPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); trailPosition.z = -9.0f; m_TrailRenderer.transform.position = trailPosition; } } else { m_MousePositions.Clear(); } // Sliced sprites sharing the same layer as standard Unity sprites could increase the draw call count as // the engine will have to keep swapping between rendering SlicedSprites and Unity Sprites.To avoid this, // move the newly sliced sprites either forward or back along the z-axis after they are created for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { Vector3 spritePosition = m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].transform.position; spritePosition.z = -1.0f; m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].transform.position = spritePosition; } } if (addScore) { for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { if (!m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <Rigidbody2D>().isKinematic) { m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].AddComponent <OutOfCamera>(); } } } } m_SlicedSpriteInfo.Clear(); }
void OnCollisionEnter2D(Collision2D collision) { if (shooter != collision.gameObject) // Not itself { string _tag = collision.gameObject.tag; print("tag: " + tag); if (_tag != "Arrow") { if (_tag == "Mage") { collision.gameObject.GetComponent <Mage>().getDamaged(arrow_damage); gameObject.transform.parent = collision.gameObject.transform; // Arrow insert into object. gameObject.transform.parent = collision.gameObject.transform; Destroy(this); } else if (_tag == "Player") { collision.gameObject.GetComponent <YijoStatus>().Damaged(arrow_damage); gameObject.transform.parent = collision.gameObject.transform; // Arrow insert into object. gameObject.transform.parent = collision.gameObject.transform; Destroy(this); } else if (_tag == "Enemy") { print("bleeding"); collision.gameObject.GetComponent <Furfly>().StartBleeding(); Destroy(this.gameObject); } else if (_tag == "Apple") { SpriteSlicer2D.ExplodeSprite(collision.rigidbody.gameObject, 5, 15.0f, true, ref SpriteSlicer2DDemoManager.m_SlicedSpriteInfo); // If we've chosen to fade out fragments once an object is destroyed, add a fade and destroy component for (int spriteIndex = 0; spriteIndex < SpriteSlicer2DDemoManager.m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { if (!SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <Rigidbody2D>().isKinematic) { SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].layer = LayerMask.NameToLayer("Apple"); SpriteSlicer2DDemoManager.m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].AddComponent <FadeAndDestroy>(); } } } SpriteSlicer2DDemoManager.m_SlicedSpriteInfo.Clear(); Destroy(this.gameObject); /* * gameObject.transform.parent = collision.gameObject.transform; * gameObject.GetComponent<Rigidbody2D>().simulated = false; * collision.gameObject.GetComponent<Rigidbody2D>().AddForce(transform.up * (-800f)); */ } CircleCollider2D[] BoxCollider2Ds; BoxCollider2Ds = gameObject.GetComponents <CircleCollider2D>(); foreach (CircleCollider2D collider in BoxCollider2Ds) { collider.enabled = false; } if (this != null) { Destroy(this); } } } }
/// <summary> /// Update this instance. /// </summary> void Update() { // Right mouse button - explode any sprite the we click on if (Input.GetMouseButtonDown(0)) { Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); mouseWorldPosition.z = Camera.main.transform.position.z; RaycastHit2D rayCastResult = Physics2D.Raycast(mouseWorldPosition, new Vector3(0, 0, 0), 0.0f); //get points cause you hit a bird. bool birdHit = false; if (rayCastResult.rigidbody) { if (!rayCastResult.rigidbody.isKinematic) { SpriteSlicer2D.ExplodeSprite(rayCastResult.rigidbody.gameObject, 16, 7.0f, true, ref m_SlicedSpriteInfo); birdHit = true; if (m_SlicedSpriteInfo.Count == 0) { // Couldn't cut for whatever reason, add some force anyway rayCastResult.rigidbody.AddForce(new Vector2(0.0f, 4.0f)); } } } if (!timeManager.timeHasStopped()) { timeManager.addClick(birdHit); } } else { m_MousePositions.Clear(); } // Sliced sprites sharing the same layer as standard Unity sprites could increase the draw call count as // the engine will have to keep swapping between rendering SlicedSprites and Unity Sprites.To avoid this, // move the newly sliced sprites either forward or back along the z-axis after they are created for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { Vector3 spritePosition = m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].transform.position; spritePosition.z = -1.0f; m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].transform.position = spritePosition; StartCoroutine(FadeOutCollider(m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <PolygonCollider2D>(), 0.01f)); } } if (m_FadeFragments) { // If we've chosen to fade out fragments once an object is destroyed, add a fade and destroy component for (int spriteIndex = 0; spriteIndex < m_SlicedSpriteInfo.Count; spriteIndex++) { for (int childSprite = 0; childSprite < m_SlicedSpriteInfo[spriteIndex].ChildObjects.Count; childSprite++) { if (!m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].GetComponent <Rigidbody2D>().isKinematic) { m_SlicedSpriteInfo[spriteIndex].ChildObjects[childSprite].AddComponent <FadeAndDestroy>(); } } } } m_SlicedSpriteInfo.Clear(); }