void OnTriggerEnter2D(Collider2D other)
        {
            bool dispatchOnEnter = false;

            CharacterController2D turtleController2D = other.GetComponent <CharacterController2D>();

            if (turtleController2D && Turtle)
            {
                if (Item)
                {
                    var inventory = turtleController2D.GetComponent <Inventory>();
                    if (inventory != null && inventory.Contains(ItemId))
                    {
                        dispatchOnEnter = true;
                    }
                }
                else
                {
                    dispatchOnEnter = true;
                }
            }

            ShellController shellController = other.GetComponent <ShellController>();

            if (shellController && Shell)
            {
                dispatchOnEnter = true;
            }

            if (dispatchOnEnter)
            {
                ExecuteOnEnter(other);
            }
        }
        void OnTriggerExit2D(Collider2D other)
        {
            bool shouldExit = false;

            CharacterController2D turtleController2D = other.GetComponent <CharacterController2D>();

            if (turtleController2D && Turtle)
            {
                if (Item)
                {
                    var inventory = turtleController2D.GetComponent <Inventory>();
                    if (inventory != null && inventory.Contains(ItemId))
                    {
                        shouldExit = true;
                    }
                }
                else
                {
                    shouldExit = true;
                }

                shouldExit = true;
            }

            ShellController shellController = other.GetComponent <ShellController>();

            if (shellController && Shell)
            {
                shouldExit = true;
            }

            if (shouldExit)
            {
                ExecuteOnExit(other);
            }
        }