Ejemplo n.º 1
0
        private void HandleSplitEnd(List <D2dDestructible> splitDestructibles, D2dDestructible.SplitMode mode)
        {
            if (Prefab != null)
            {
                var clone = Instantiate(Prefab, transform.position, Quaternion.identity);

                clone.SetActive(true);
            }
        }
Ejemplo n.º 2
0
        private void HandleEndSplit(List <D2dDestructible> destructibles, D2dDestructible.SplitMode mode)
        {
            for (var i = destructibles.Count - 1; i >= 0; i--)
            {
                var destructible = destructibles[i];

                if (TryFixTo(destructible) == true)
                {
                    return;
                }
            }

            DestroyFixture();
        }
        private void HandleSplitEnd(List <D2dDestructible> splitDestructibles, D2dDestructible.SplitMode mode)
        {
            if (splitDestructibles.Count > 0 && (applyTo == D2dDestructible.SplitMode.All || applyTo == mode))
            {
                var center = Vector2.zero;

                for (var i = splitDestructibles.Count - 1; i >= 0; i--)
                {
                    var splitRigidbody2D = splitDestructibles[i].GetComponent <Rigidbody2D>();
                    var splitCenter      = (Vector2)splitRigidbody2D.transform.TransformPoint(splitRigidbody2D.centerOfMass);

                    center += splitCenter;
                }

                center /= splitDestructibles.Count;

                for (var i = splitDestructibles.Count - 1; i >= 0; i--)
                {
                    var splitRigidbody2D = splitDestructibles[i].GetComponent <Rigidbody2D>();

                    var splitCenter = (Vector2)splitRigidbody2D.transform.TransformPoint(splitRigidbody2D.centerOfMass);
                    var vector      = splitCenter - center;
                    var distance    = vector.magnitude;

                    if (distance == 0.0f)
                    {
                        var a = Random.Range(-Mathf.PI, Mathf.PI);

                        vector.x = Mathf.Sin(a);
                        vector.y = Mathf.Cos(a);
                    }

                    splitRigidbody2D.AddForce(vector.normalized * strength, ForceMode2D.Impulse);
                }
            }
        }
Ejemplo n.º 4
0
        protected override void HandleSplitEnd(List <D2dDestructible> splitDestructibles, D2dDestructible.SplitMode mode)
        {
            base.HandleSplitEnd(splitDestructibles, mode);

            for (var i = splitDestructibles.Count - 1; i >= 0; i--)
            {
                var splitDestructible = splitDestructibles[i];
                var polygonCollider   = splitDestructible.GetComponent <D2dPolygonCollider>();

                if (polygonCollider != null)
                {
                    polygonCollider.Rebuild();
                }
            }
        }
Ejemplo n.º 5
0
 protected virtual void HandleSplitEnd(List <D2dDestructible> splitDestructibles, D2dDestructible.SplitMode mode)
 {
     ReconnectChild();
 }
        protected virtual void HandleSplitEnd(List <D2dDestructible> splitDestructibles, D2dDestructible.SplitMode mode)
        {
            for (var i = splitDestructibles.Count - 1; i >= 0; i--)
            {
                var splitDestructible = splitDestructibles[i];

                if (splitDestructible.gameObject != gameObject)
                {
                    var splitRigidbody2D = splitDestructible.GetComponent <Rigidbody2D>();

                    if (splitRigidbody2D != null)
                    {
                        splitRigidbody2D.velocity        += velocity;
                        splitRigidbody2D.angularVelocity += angularVelocity;
                    }
                }
            }
        }