How to detect collision without using OnCollisionEnter


I’m placing my character on the ground. and I want to know if It will conflict with other object or not because if so, I’m making game like not to place the character on there.

but Problem is after looking for many answers, there might not be other way to check collision without using OnCollisionEnter.
It I place character anyway, of course OnCollisionEnter is called and physics is working and it will push each other. Even if i destroy character immediately, It shows a moment.

What I want is that if I create character on somewhere player clicked and check if it conflict with other object, If so, I will delete it so that give another chance to player to place character some other place.

So I want to know if there is other way that expecting collision before OnCollisionEnter is called. (with using Unity3d’s collision engine or something)



Transform t = Instantiate(mycharacter,......);
bool bAlreadyThere = false;

foreach(GameObject obj in ObjsOnGround) 
         bAlreadyThere = true; break; 

// delete t; 
 //setting character there is OK 

I’m looking for method like “IsCollisionTo”, but I couldn’t find yet. of course, IsCollisionTo method is not real method.

It seems you should use Physics.CheckCapsule to determine if there is a collider at the location already. I assume you have a character collider, which are usually capsules. There is a similar method for spheres. However, there is no method for Box colliders, but I would imagine the capsule check is close enough.