Placing child object on parent objects local-space origin

I’ve imported a single model, which is composed of dozens of different mesh. Each mesh is uniquely selectable in the unity editor, but all of them are attached to the parent gameobject. If I select one of the child mesh and look at it’s transform, it’s position will be (0,0,0). That makes sense based on my understanding that the transform of a child gameobject is relative to the origin of the parent’s transform.

Let’s say the model is a pool table. I place the model at the exact world origin, (0,0,0) The pool table has 7 child gameobjects each with their own mesh. Six of these mesh are the six standard holes in a pool table, and the remaining mesh is everything else. What i’d like to do is now create a new gameobjec, lets say a generic spherical mesh, who’s parent is one of these holes, and have it’s location be pretty much wherever that hole mesh is located. What’s happening is that the new gameobject, who’s parent is one of said holes, and has a location of (0,0,0), is being placed at the bottom left corner of the entire table and not anywhere near the parent hole mesh as I’d have expected. I’d like to be able to create a new prefab gameobject and drag it as a child object of each of the six holes, and have each new object be located where their parent hole mesh is.

Set your new object’s root’s position to the hole’s position.

If your child objects (the holes) have it’s origin at the parents origin, why would you expect when setting another objects position to that position that it will be somewhere else? I guess your hole meshes are simply ofsetted in localspace, so their pivot is not in the center of the hole but at the pivot of the parent. When you see 0,0,0 in the inspector it means it’s at the same position as the parent is.

If your table and hole meshes are made in an external application you should move the pivots of the hole objects to the hole’s center.