Exemple #1
0
    public void StartInteraction(IDynamic otherDynamic)
    {
        Interacting  = true;
        _tempDynamic = otherDynamic;

        _hero.SetWalkingActivation(false, true);
        _hero.SetStickinessActivation(false);

        var otherCollider = ((MonoBehaviour)otherDynamic).GetComponent <Collider2D>();

        _cloneOtherDynamic = _poolManager.GetPoolable <DynamicCollider>(otherCollider.transform.position, otherCollider.transform.rotation, 1, otherDynamic.PoolableType, defaultParent: false);
        _cloneOtherDynamic.transform.localScale = otherCollider.transform.localScale;

        _cloneHeroCollider  = _poolManager.GetPoolable <DynamicNinjaCollider>(transform.position, transform.rotation, defaultParent: false);
        CloneHeroStickiness = _cloneHeroCollider.GetComponent <Stickiness>();

        _cloneHero = _cloneHeroCollider.GetComponent <DynamicNinja>();
        _cloneHero.SetNinja(_hero);

        CloneHeroStickiness.Awake();
        CloneHeroStickiness.Start();

        CloneHeroStickiness.ContactPoint.SetParent(_cloneOtherDynamic.Transform, true);

        _cloneHeroCollider.Transform.SetParent(_cloneOtherDynamic.Transform, true);
        _previousPosition = _cloneHeroCollider.Transform.localPosition;

        _hero.Transform.SetParent(otherCollider.transform, true);

        _hero.Stickiness.Collider.isTrigger        = true;
        _hero.Stickiness.Rigidbody.angularVelocity = 0;
        _hero.Stickiness.Rigidbody.velocity        = Vector2.zero;

        CloneHeroStickiness.ReactToObstacle(_cloneOtherDynamic, _hero.Stickiness.GetContactPosition());
    }
Exemple #2
0
            private void HandleDynamicVsHeightMapCollision(
                DynamicCollider dynCollider,
                HeightMapCollider hMapCollider,
                List <Contact> contacts,
                List <Segment> coarseContacts)
            {
                // position of bounding sphere in world coordinates
                Vector3 spherePos = dynCollider.BoundingSphere.CenterW;
                float   radius    = dynCollider.BoundingSphere.Radius;

                // filtering the triangle grid with the sphere projection
                hMapCollider.TriGrid.FilterBySphereProjection(spherePos, radius);

                foreach (Triangle tri in hMapCollider.TriGrid)
                {
                    Vector3Int ind = hMapCollider.TriGrid.CurrentIndices;

                    colors[ind.x] = colors[ind.y] = colors[ind.z] = Color.blue;

                    if (IntersectionTest.SphereVsTriangle(spherePos, radius, tri))
                    {
                        if (dynCollider is CSACollider)
                        {
                            // curves vs triangle
                        }
                        else if (dynCollider is BruteForceCollider)
                        {
                            // triangles vs triangle
                        }
                        else if (dynCollider is VertexCollider)
                        {
                            // vertices vs triangle
                        }
                    }
                }
            }
 public DynamicColliderCreationEventArgs(DynamicCollider collider)
 {
     Collider = collider;
 }