예제 #1
0
    void OnChomp(ChompMessageData chompData)
    {
        if (!enabled)
        {
            return;
        }

        var mutableCollider = GetComponent <MutableSpriteCollider> ();

        if (mutableCollider.enabled)
        {
            mutableCollider.CutCircle(chompData.Center, chompData.Radius, chompData.Colliders);
        }
    }
예제 #2
0
파일: Chomper.cs 프로젝트: vsugrob/Wyrms
    private void Chomp()
    {
        var origin    = Origin;
        var colliders = Physics2D.OverlapCircleAll(origin, Radius, LayerMask);

        if (colliders.Length > 0)
        {
            /* Send message once per game object even when circle overlapped
             * several colliders attached to the same object. */
            var collidersByGameObjects = new Dictionary <GameObject, List <Collider2D> > ();

            foreach (var overlappedCollider in colliders)
            {
                // Ignore self-overlapping.
                if (collider2D != null && (
                        overlappedCollider == collider2D ||
                        overlappedCollider.attachedRigidbody == collider2D.attachedRigidbody
                        )
                    )
                {
                    continue;
                }

                List <Collider2D> colliderList;

                if (!collidersByGameObjects.TryGetValue(overlappedCollider.gameObject, out colliderList))
                {
                    colliderList = new List <Collider2D> ();
                    collidersByGameObjects [overlappedCollider.gameObject] = colliderList;
                }

                colliderList.Add(overlappedCollider);
            }

            foreach (var gameObjectColliders in collidersByGameObjects)
            {
                var go           = gameObjectColliders.Key;
                var colliderList = gameObjectColliders.Value;
                var data         = new ChompMessageData(transform.position, Radius, colliderList, this);
                go.SendMessage(ChompMessageData.MessageName, data, SendMessageOptions.DontRequireReceiver);
            }
        }
    }