Nein, my.polygon = on; für dynamische (sprich sich-bewegende) entities zu setzen is tödlich.
Dachte eigentlich, dass das mittlerweile oft genug gesagt wurde.

c_updatehull(my,my.frame);
Das ist schon der richtige ansatz.
Wenn die entity dann anfängt zu schweben hast du deinen gravity code verbockt/verbugged.
Desweiteren sollte die kugel und der zombie diese function mindestens einmal aufrufen.
Da c_updatehull als "slow" gekennzeichnet ist und erst 2 frames später garantiert wirksame ist solltest du es nur bei wichtigen animations änderungen (stehen <-> knien oder halt arme heben) aufrufen.
Ein korrektes, sicheres c_updatehull am beginn einer action sieht wie folgt aus:
Code:

action my_entity
{
wait(1);
c_updatehull(my,my.frame);
wait(2);
...