Beispiel #1
0
    /// <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);
                }
            }
        }
    }
Beispiel #3
0
    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);
     }
 }
Beispiel #5
0
    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;
        }
    }
Beispiel #6
0
 void CutThis()
 {
     if (currentpointNum >= 2)
     {
         Vector3 worldPosStart = WorldMousePositions[currentpointNum - 2];
         Vector3 worldPosEnd   = WorldMousePositions[currentpointNum - 1];
         SpriteSlicer2D.SliceAllSprites(worldPosStart, worldPosEnd);
     }
 }
Beispiel #7
0
 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
         }
     }
 }
Beispiel #8
0
    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);
    }
Beispiel #9
0
        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();
            }
        }
Beispiel #10
0
 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();
        }
    }
Beispiel #12
0
    /// <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();
    }
Beispiel #13
0
    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);
                }
            }
        }
    }
Beispiel #14
0
    /// <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();
    }