- Home /
How to detect in grid of objects if one is destroyed while beside adjacent objects without rigidbody?
If I have a 2d grid of 100 x 100 transforms, each with a 2d box collider set as "IsTrigger" true. A player is mining through the boxes and as the player destroys the box in the grid, I would like to trigger the adjacent boxes to react so that I can change their sprite. My problem is getting them to detect when the box beside is no longer there.
I cannot attach a rigid body to each of these objects as this would cause significant load given the amount of transforms being generated.
I was thinking of having the BoxCollider2D set 1 pixel larger than the actual transform so that all the boxes in the grid side by side have colliders that weave together. When one collider is removed, then calling the OnCollisionExit but that will not work given that 1) the colliders are set as triggers, 2 these boxes do not have rigid bodies attached.
Any suggestions?
Thanks.
Answer by ArkaneX · Dec 06, 2013 at 01:53 PM
You can keep coordinates of a transform in your grid in X and Y variables, and on destroying the box, call an AdjacentBoxDestroyed()
method on the adjacent boxes. Adjacent means all the boxes having X equal to destroyedBox.X - 1/destroyedBox.X/destroyedBox.X + 1 (and the same logic for Y). Of course you have to skip the original box (X=destroyedBox.X & Y=destroyedBox.Y) and properly handle cases where box is at the edge/corner.
To quickly find the neighbors, just store your game objects in two dimensional array. This way, knowing the X and Y of your original box, you can select neighbors by their indexes in the array.
Your answer
Follow this Question
Related Questions
Collision between two kinematic rigidbody triggers 2 Answers
rigidbody2D.addforce in collider 1 Answer
I'd like some help with my health / shooting (collision detection) 1 Answer
2d collision detecting simultaneous collisions. 1 Answer
Collision Detection - Strange issues! Working when it shouldnt, not working when it should! 2 Answers