public void MouseDown(Transform mouseTransform)
        {
            if (_snapable == null)
            {
                return;
            }

            if (_snapableOffset == null)
            {
                _snapableOffset = _snapable.GetBlockContainerTransform().position - mouseTransform.position;
            }

            foreach (ISnapable snapable in _snapable.ShapeContainer.Transform.GetComponentsInChildren <ISnapable>())
            {
                snapable.SetIsTrigger(true);
            }
            _isDragging = true;
            Vector2?targetPos = mouseTransform.position + _snapableOffset;

            _snapable.GetBlockContainerTransform().position = (Vector3)targetPos;

            Rigidbody2D snapableRb = _snapable.Transform.parent.GetComponent <Rigidbody2D>();

            if (Math.Abs(snapableRb.gravityScale) > 0.001f)
            {
                _lastGravityScale = snapableRb.gravityScale;
            }
            snapableRb.gravityScale = 0;
        }
Exemple #2
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        ISnapable snapable = other.GetComponent <ISnapable>();

        if (snapable == null)
        {
            return;
        }

        foreach (var snapable2 in snapable.GetBlockContainerTransform().GetComponentsInChildren <ISnapable>())
        {
            snapable2.SetIsTrigger(false);
        }
    }