The idea is to
The approach I took in my collision projectiles system was the following:
[ljass].absz[/ljass] is the z height I want the missile to be at, at all times, lets say 70., such that as terrain height changes (up or down), that value, and the subsequent z fly height for my projectile, remains unchanged. [ljass].flyheight[/ljass] is the fly height the user specifies as that for the projectile, which in the end yields a total z height dependent on terrain z heights. [ljass].z[/ljass] is the z height at the projectiles origination point. What makes this difficult is that terrain z heights can be negative, and that fly height is relative to terrain z heights, and are not absolute values.
Now to maintain my projectiles constant z height
Now testing has told me that this returns the correct fly height to maintain my constant z fly height. Lets say the initial fly height is at 50., and the terrain z height is at 20., therefore the projectiles z height should remain at 70. throughout the spell. If, for instance, at these coords, the terrain z height is 0., my function returns a value of 70. [50.+(20.-0.)], such that the z height of my projectile is the same (0.+70.)=70., where originally it was (20.+50.)=70. If the terrain z height is 40., my function returns 50.+(20.-40.)=30., and 30.+40.=70. Again, constant z height for the projectile. Even works with negatives. 50.+(20.--20.)=90., -20.+90.=70. Woohoo.
Great! Only problem is, my projectile, as seen in the test map, still manages to bob up and down as if it is still effected by terrain z height changes, and its fly height is held constant.
Is this because the fly height changes are not instant? If not, then what gives?
I figure the answer to this question will help me discern the answer to my second.
- Make it so that a projectile flys above the ground at a constant total z height, uneffected by slight variations in terrain height
- Jump/move parabolically on to and off of cliffs
The approach I took in my collision projectiles system was the following:
JASS:
// Store relevant fly and z heights
call SetUnitFlyHeight(.dummy,z,0.)
set .flyheight=z
call MoveLocation(LOC,x,y)
set .z=GetLocationZ(LOC)
set .absz=.z+.flyheight
[ljass].absz[/ljass] is the z height I want the missile to be at, at all times, lets say 70., such that as terrain height changes (up or down), that value, and the subsequent z fly height for my projectile, remains unchanged. [ljass].flyheight[/ljass] is the fly height the user specifies as that for the projectile, which in the end yields a total z height dependent on terrain z heights. [ljass].z[/ljass] is the z height at the projectiles origination point. What makes this difficult is that terrain z heights can be negative, and that fly height is relative to terrain z heights, and are not absolute values.
Now to maintain my projectiles constant z height
JASS:
// Constant fly height adjustments
call MoveLocation(LOC,x,y) // where x/y are the projectiles coords
// Maintain static fly height
// The idea here was to maintain a constant flying z value, such that terrain height changes
// would not be reflected in its magnitude. In theory, it works great, in execution, not so much...
call SetUnitFlyHeight(.dummy,.flyheight+(.z-GetLocationZ(LOC)),0.)
Now testing has told me that this returns the correct fly height to maintain my constant z fly height. Lets say the initial fly height is at 50., and the terrain z height is at 20., therefore the projectiles z height should remain at 70. throughout the spell. If, for instance, at these coords, the terrain z height is 0., my function returns a value of 70. [50.+(20.-0.)], such that the z height of my projectile is the same (0.+70.)=70., where originally it was (20.+50.)=70. If the terrain z height is 40., my function returns 50.+(20.-40.)=30., and 30.+40.=70. Again, constant z height for the projectile. Even works with negatives. 50.+(20.--20.)=90., -20.+90.=70. Woohoo.
Great! Only problem is, my projectile, as seen in the test map, still manages to bob up and down as if it is still effected by terrain z height changes, and its fly height is held constant.
Is this because the fly height changes are not instant? If not, then what gives?
I figure the answer to this question will help me discern the answer to my second.