Question by
mileswells93 · Oct 17, 2020 at 05:33 PM ·
physics2dcollider2doverlap
OverlapBox not working as expected
Hi everyone. I'm trying to create game objects by a player clicking, but only if the created object wouldn't overlap with any others. Relevant block:
// left click
if (Input.GetMouseButtonDown(0))
{
// mouse position on viewport
var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
pos.z = 1;
// menu item is selected
if (activeItem != null)
{
var rectSize = this.activeItem.sprite.rect.size;
var colliderSize = Camera.main.ScreenToViewportPoint(rectSize);
var collidedWith = Physics2D.OverlapBox(pos, colliderSize, 0);
// if the new object won't overlap, go ahead and create it.
if (collidedWith == null)
{
var newObj = new GameObject(activeItem.label); // create game object
newObj.AddComponent(System.Type.GetType(activeItem.className)); // add script
var collider = newObj.AddComponent<BoxCollider2D>(); // add collider
var renderer = newObj.AddComponent<SpriteRenderer>(); // add sprite renderer
// rendering and positioning stuff
renderer.sprite = activeItem.sprite;
renderer.sortingLayerName = "GameObjects";
renderer.transform.position = pos;
}
}
}
This mostly works, but still allows overlap on roughly half of an object:
My goal is for the player to be unable to place objects overlapping at all. Thanks in advance for any advice!
problem.png
(5.2 kB)
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613014007im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
2D prefabs(Enemy) overlap issue 0 Answers
i need help making this code work with 2D physics. 0 Answers
A box collider 2D (Is Trigger marked) stops my player from moving which has rigidbody 2D 1 Answer
How to add space between 2D Rigidbody objects without using colliders 0 Answers
Top-down collisiondetection 0 Answers