In my projectile system I found a way to make it move smooth over cliffs and such. I can tell you what I did:
Step 1: calculate a "smooth" linear function for the ground. I mean, if the startlocZ is let say 0, and the endlocZ is 128, the linear function would get the formula y = (128-0)/maxduration * 'current time'
So, in my case, I did at the beginning of the missile creation:
JASS:
set d.locZ0 = GetLocationZEx(x0,y0)
set d.locZinc = (GetLocationZEx(x1,y1)-d.locZ0)/d.timemax
At the loop function I stored the height in which you should subtract the "normal" heightparabola with, as
JASS:
set d.time = d.time+interval
set d.nX = d.x0+d.speed*d.time*d.cos
set d.nY = d.y0+d.speed*d.time*d.sin
set d.nZ = GetLocationZEx(d.nX,d.nY)-(d.locZ0+d.locZinc*d.time)
[...]
call SetUnitFlyHeight(d.missile,<Slope parabola formula>-d.nZ, 0)
This is creating a smooth parabola which is not affected by the ground height.
Oh uhm, if I described it too unundestandable, you could check out the system by pressing the link on my sig.
@ Scorpion: You dont seem to have negative reputation, so yes you can =)