Question by
JumpLittleChickn · Oct 15, 2017 at 02:08 AM ·
2dcolliders
2D Dragable Boxes Move Into Each Other
I have two 2x2 boxes I want to drag around in an 8x8 field. I want each box to treat the other like a solid object, preventing movement into it but still being able to slide back and forth while touching the companion box. They both have the following script attached:
Vector3 mouseToWorld;
bool isBeingMoved;
void Update () {
mouseToWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition); //Converts the mouse position to world units for the sake of box moving
//If the primary mouse button is released while the mouse is not hovering over a box, turn movement off
if (Input.GetMouseButtonUp(0))
{
isBeingMoved = false;
}
//Checks if the mouse is hovering over a box. If it is, check if the primary mouse button is down.
//If both are true, have the mouse start dragging the box.
if (mouseToWorld.x <= (transform.position.x + 1) && mouseToWorld.x >= (transform.position.x - 1)
&& mouseToWorld.y <= (transform.position.y +1) && mouseToWorld.y >= (transform.position.y -1))
{
if (Input.GetMouseButton(0))
{
isBeingMoved = true;
} else
{
isBeingMoved = false;
}
}
//Using a bool prevents quick mouse movements from detaching the mouse from the box
if (isBeingMoved)
{
MoveWithMouse();
}
}
private void MoveWithMouse()
{
Vector3 boxPosition = new Vector3(0f, 0f, 0f)
{
x = Mathf.Clamp(mouseToWorld.x, -3f, 3f),
y = Mathf.Clamp(mouseToWorld.y, -3f, 3f)
};
transform.position = boxPosition;
}
private void OnCollisionEnter2D(Collision2D collision)
{
Debug.Log("Boop");
}
They both have 2d colliders attached, and not set as triggers. I tested using a falling object, and when it hits the box it acts as expected. What should I do?
Comment