Why does my prefab fall apart?

I have an arrow prefab, it has a empty game object called arrow (because the darn primitive 's x axis is facing the wrong way for it to shoot forward) and inside the empty it has a primitive cylinder and a primitive pyramid which make up the arrow. Both have rigid bodys, because I am trying to make the head of the arrow heavier than the rest of the arrow.

Now, when I shoot the arrow, the head of the arrow falls off and falls to the ground. Why? With it being a prefab shouldnt it stay all together?

why would you want the arrows head to be heavier than the rest of the arrow? for arcing?

because both have a rigid body they would both be affected by physics and be considered separate objects. It sounds like your prefab at this point is creating instances of both the pyramid and cylinder.

if you want your arrow to be affected by the in game physics then you should remove the rigidbody from the two primitive game objects and attach it to your empty game object. Otherwise it will simply fall apart every time it’s called on (which is most like likely once per frame, so as soon as you try to use it it will fall apart)

or you can parent the pyramid to the cylinder.

either way, they will both be pulled down by gravity at the same rate because gravity has the same effect on all things regardless of weight, mass, or size.
in order to get a flying arrow effect you would need to program an air resistance script and apply it to your arrow.

or if you want your arrow to arc along the path of some curve then you would need to write a script that transforms the rotation of the gameobject along the tangent line of the curve. that would be f’(x) where f(x)is the trajectory of the arrow.

eg) f(x) = -20m/s^2 +35m/s +10m therefore f’(x) = -40m/s +35m

I would just stick with the easy way and remove the two rigidbodies then add a single rigidbody to the entire gameobject. Or you could try itween.

There should only be one rigidbody per object.