Example #1
0
        private void OnTriggerEnter2D(Collider2D other)
        {
            MonoBehaviour[] components = other.GetComponents <MonoBehaviour>();
            foreach (MonoBehaviour component in components)
            {
                ISplitable splitable = component as ISplitable;
                if (splitable != null)
                {
                    //Impactpo

                    /*
                     * ImpactPoint = collision.contacts[0].point;
                     * PushForce = (collision.transform.position - ImpactPoint).normalized;
                     * PushForce += ImpactPoint + Weapon.velocity.normalized;
                     * Weapon.velocity = Weapon.velocity / 2;
                     * CreatePlane(ImpactPoint, PushForce);
                     */
                    SplitObject(splitable, other.gameObject);
                    PolygonCollider2D lmao = new PolygonCollider2D();
                    lmao.points    = new Vector2[4];
                    lmao.points[0] = new Vector2(2, 2);
                    lmao.points[0] = new Vector2(1, 2);
                    lmao.points[0] = new Vector2(2, 1);
                    lmao.points[0] = new Vector2(1, 1);

                    break;
                }
            }
        }
Example #2
0
    IEnumerator Crush(ISplitable splitable, int numIterations)
    {
        yield return(new WaitForSeconds(0.005f));


        //impactPoint = transform.position + 0.5f * transform.forward;

        for (int i = 0; i < numIterations; i++)
        {
            GameObject gocrushPlane = new GameObject("crushPlane", typeof(BoxCollider), typeof(Rigidbody) /*, typeof(SplitterSingleCut)*/);

            gocrushPlane.GetComponent <Collider>().isTrigger = true;
            Rigidbody bodycrushPlane = gocrushPlane.GetComponent <Rigidbody>();
            bodycrushPlane.useGravity  = false;
            bodycrushPlane.isKinematic = true;

            Transform transformcrushPlane = gocrushPlane.transform;

            Bounds bounds = ((Splitable)splitable).GetComponent <Renderer>().bounds;
            //transformcrushPlane.position = ((Splitable)splitable).transform.position + Random.Range(-bounds.extents.x, bounds.extents.x) * Vector3.right + Random.Range(-bounds.extents.y, bounds.extents.y) * Vector3.up + Random.Range(-bounds.extents.z, bounds.extents.z) * Vector3.forward;
            transformcrushPlane.position   = bounds.center + 0.2f * Random.onUnitSphere;
            transformcrushPlane.up         = Quaternion.AngleAxis(Random.Range(0f, 360f), transform.right) * transform.up;
            transformcrushPlane.up         = Quaternion.AngleAxis(Random.Range(0f, 360f), transformcrushPlane.forward) * transformcrushPlane.up;
            transformcrushPlane.localScale = new Vector3(20f, .01f, 20f);

            if ((Splitable)splitable != null)
            {
                ((Splitable)splitable).onSplitObject.AddListener(SplitResult);
            }

            ((Splitable)splitable).SplitForce = 0;
            splitable.Split(transformcrushPlane);

            foreach (var item in lastSplitObjects.ToList())
            {
                if (item != null)
                {
                    if (item.GetComponent <Splitable>() != null)
                    {
                        item.GetComponent <Splitable>().onSplitObject.AddListener(SplitResult);
                    }

                    item.GetComponent <Splitable>().Split(transformcrushPlane);
                }
            }

            yield return(null);

            DestroyObject(transformcrushPlane.gameObject);
        }

        foreach (var rb in lastSplitObjects.Select(x => x.GetComponent <Rigidbody>()))
        {
            //Debug.Log("BOOM");
            rb.velocity = Vector3.zero;
            rb.AddForce(1000 * (rb.transform.position - impactPoint), ForceMode.Impulse);
        }
    }
Example #3
0
 protected virtual void SplitObject(ISplitable splitable, GameObject go)
 {
     //ThalmicMyo thalmicMyo = col.myo.GetComponent<ThalmicMyo>();
     //thalmicMyo.Vibrate(Thalmic.Myo.VibrationType.Long);
     go.GetComponent<Renderer>().material.color = Color.red;
     splitted = true;
     manager.AddScore();
     splitable.Split(_transform);
 }
Example #4
0
    void OnTriggerEnter(Collider col)
    {
        if (recentCut)
        {
            return;
        }

        if ((lastSplitObjects.Contains(col.gameObject)))
        {
            return;
        }

        ISplitable splitable = null;

        MonoBehaviour[] components = col.GetComponents <MonoBehaviour>();
        foreach (MonoBehaviour component in components)
        {
            splitable = component as ISplitable;
            if (splitable != null)
            {
                break;
            }
        }

        if (splitable != null)
        {
            //GetComponent<Collider>().enabled = false;
            //Invoke("EnableCollider", 0.1f);
            Debug.Log("Collided");
            recentCut = true;
            cutTimer  = 0f;
            lastSplitObjects.Add(col.gameObject);
            StartCoroutine(RemoveFromList(col.gameObject));

            GameObject goCutPlane = new GameObject("CutPlane", typeof(BoxCollider), typeof(Rigidbody) /*, typeof(SplitterSingleCut)*/);

            goCutPlane.GetComponent <Collider>().isTrigger = true;
            Rigidbody bodyCutPlane = goCutPlane.GetComponent <Rigidbody>();
            bodyCutPlane.useGravity  = false;
            bodyCutPlane.isKinematic = true;

            Transform transformCutPlane = goCutPlane.transform;
            transformCutPlane.position   = transform.position;
            transformCutPlane.up         = -transform.forward;    // transform.up;
            transformCutPlane.localScale = new Vector3(20f, .01f, 20f);

            if ((Splitable)splitable != null)
            {
                ((Splitable)splitable).onSplitObject.AddListener(SplitResult);
            }

            splitable.Split(transformCutPlane);
            DestroyObject(transformCutPlane.gameObject);
        }
    }
Example #5
0
 private void OnTriggerEnter(Collider other)
 {
     MonoBehaviour[] components = other.GetComponents <MonoBehaviour>();
     foreach (MonoBehaviour component in components)
     {
         ISplitable splitable = component as ISplitable;
         if (splitable != null)
         {
             SplitObject(splitable, other.gameObject);
             break;
         }
     }
 }
Example #6
0
    void OnCollisionEnter(Collision col)
    {
        if (recentCrush)
        {
            return;
        }

        if ((lastSplitObjects.Contains(col.gameObject)))
        {
            return;
        }

        ISplitable splitable = null;

        MonoBehaviour[] components = col.gameObject.GetComponents <MonoBehaviour>();
        foreach (MonoBehaviour component in components)
        {
            splitable = component as ISplitable;
            if (splitable != null)
            {
                break;
            }
        }

        if (splitable != null)
        {
            //GetComponent<Collider>().enabled = false;
            //Invoke("EnableCollider", 0.1f);
            Debug.Log("Collided");
            recentCrush = true;
            crushTimer  = 0f;
            impactPoint = col.contacts[0].point;
            Instantiate(hitParticles, impactPoint, Quaternion.LookRotation(transform.position - ((Splitable)splitable).transform.position), ((Splitable)splitable).transform);
//			Destroy(hitParticles, 5f);
            superhotTime     = true;
            collider.enabled = false;
            StartCoroutine(Crush(splitable, 4));
            col.gameObject.GetComponent <Valve.VR.InteractionSystem.Throwable>().enabled = true;
        }
    }
 protected override void SplitObject(ISplitable splitable, GameObject go)
 {
     splitable.Split(_transform);
     _hasCut = true;
 }
Example #8
0
 protected virtual void SplitObject(ISplitable isplitable, GameObject go)
 {
     isplitable.Split(_transform);
 }
 protected override void SplitObject(ISplitable splitable, GameObject go)
 {
     Debug.Log("Transform:" + _transform.position);
     splitable.Split(_transform);
     _hasCut = true;
 }
Example #10
0
 protected override void SplitObject(ISplitable splitable, GameObject go)
 {
     splitable.Split(_transform);
     _hasCut = true;
 }
Example #11
0
 protected virtual void SplitObject(ISplitable splitable, GameObject go)
 {
     splitable.Split(_transform);
 }