Here is an an example. I am making a “wagon”, which is just a cube, stretched out a bit for the body, with 4 cylinders “attached” as wheels. I want to parent the cylinders to the body, to have one complete object.
The problem is, when I try to do this, the wheels deform (I think they are taking on the transform characteristics of the body, at least that’s how I understand how this works).
How do I stop this, and have the wheels retain their original shape? Or am I going about this the wrong way to build a complex shaped object (compounded out of other smaller shapes, that end up being one object)?
Sounds like the wheels are taking on the scale properties of the parent. You could try creating the object in something like Max and Blender to the correct proportions you need before importing into Unity, so you do not need to scale the parent transform.
If (like me) you are creating prototype models and maps directly in Unity and want to avoid switching back and forwards between external packages (like Max and Blender) so you can maximise the time spent learning Unity you might try these:-
They are extremely good value for money and [ProBuilder + ProGrids] have saved me a huge amount of time and effort.
This way you avoid scaling primatives and (I think) any issues with the child transforms scaling.
I see nothing wrong with creating an object out of many different objects but as a rule I avoid scaling objects within Unity unless it is in all 3 axis uniformly.
@Zpilintz’s solutions are the right/best solutions. But here are a couple of hackish solutions.
Create an empty game object stand-in for any object that is not uniformly scaled. So the body of the car would be an empty game object. The visible body and the four wheels would be children of the empty game object.
You will find an editor script called RotateMesh in the following link. It is designed to fixup rotations, but it will also fixup non-uniform scaling. After placing the editor script in the Editor folder, select your non-uniform car body (no children), and select RotateMesh from menu. It will create a clone that has scale of (1,1,1). You can then delete the original and add the wheels to the clone.