You could use both, depending on case and need. Both are valid and both occur together.
The difference in your case is apparently how you define loss of energy, ie. what is more convenient and accurate.
In case of momentum, we have P=mv, and you can only work with v; in practice only with elastic collisions. Here is the classic example of (indestructable) momentum, in an (almost) closed system:
How would one manage energy loss there? Maybe by saying "next speed = 99 % of previous", or something. The mass remains, so only v is left. For truly elastic collisions, you could ofc estimate v1 (incoming speed) and v2 (what is left after collision - maybe hard code a max/min percent?), calculate the difference and transfer what was lost as momentum to the target object, using it's mass - you get a velocity. The target will then move nicely. One must ofc always do the calculation in both directions.
But as soon as there are more "daily" objects, and one aims for realism, i think the kinetic energy E=0.5mv^2 comes in. Then it's a question of defining how much the parties absorb when being hit, and then using the rest for calculating speed changes for the objects. Here is (almost) fully plastic collision.
It might be easier to work with the "how much absorbs" when using kinetic energy. Maybe use percentages of the full energy? Then you may have a better chance to get it look right by modeling, by using trial and error.
- Calculate how much energy the whole system has at collision (say the two cars). That is 2 * 0.5mv^2.
- Calculate how much of that A absorbs, how much B absorbs (use strength, health settings etc). Say A absorbs 20 % of the full energy, B absorbs 30 %. Remains 50 %.
- Both "get" equally much of the remaining energy. So add 50 % of it (opposite direction!) to A:s existing energy, 50 % to B:s, then resolve a new (lower) velocities for both. If for example a car collides with a heavy truck, then remaing 50 % for the car will be so big that it may exceed it's original energy, and hence it changes direction of movement. The trucks remaining 50 % is small compared to it's original energy, so it only slows down.
The absorbing figures will likely be close to 100 % in total, as anything else will cause a bit of bounciness. I think you will have to spread out (repeat) the calculation over multiple frames, as these should be higher grade equations in reality. If the collision isn't fully elastic, the objects absorb for a longer duration of time.
Finally, you get a more realistic damage model when using kinetic energy, because apparently absorbing energy causes damage? Will be more accurate than using momentum.