A ver si entiendo, ¿quieres que una serie de objetos se mantenga (en z) sobre una superficie animada? Si es así prueba ejecutando el siguiente código.
Código:
for i=1 to $selection. Count-1 do.
(Tlocal ca = attributes followsurface t(t parameters followparams (t zpues type:#float ) t) tcustattributes, add $selection[i] ca tlocal mycontroller = $selection[i].position, z_position, controller = float_script() tmycontroller, addnode myobject $selection[i] tmycontroller, addnode myterrain $selection[selection, count] tmycontroller, script = DependsOn myterrain \n+\ local dwraytoterrain = ray myobject, position [0,0,-1] \n+\ local upraytoterrain = ray myobject, position [0,0,1] \n+\ case of \n+\ (\n+\ (intersectray myterrain upraytoterrain.= undefined): local zposition = intersectray myterrain upraytoterrain \n+\ (intersectray myterrain dwraytoterrain.= undefined): local zposition = intersectray myterrain dwraytoterrain \n+\ ) \n+\ if zposition.= undefined then myobject, followsurface, zpues = zposition, position, z \n+\ myobject, followsurface, zpos.
)
La forma de usarlo sería primero seleccionar todos los objetos que quieres mantener en la superficie y finalmente el terreno, luego ejecuta el script y si todo sale bien debería funcionar. es importante que el terreno tenga polígonos mirando hacia arriba y hacia abajo por lo que para que funcione correctamente habría que asegurarse de tener un modificador Shell en el terreno.
Espero que te sirva. Saludos.