Constant FlyHeight + Cliff Jumping

emjlr3

Change can be a good thing
Reaction score
395
The idea is to
  1. Make it so that a projectile flys above the ground at a constant total z height, uneffected by slight variations in terrain height
  2. 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.
 

Narks

Vastly intelligent whale-like being from the stars
Reaction score
90
I remember reading something about units that use the "fly" movement type will give you lots of heartache when moving over cliifs, so projectile systems use the "hover" movement type (I think).
 

emjlr3

Change can be a good thing
Reaction score
395
hover you say...
 

Tom_Kazansky

--- wraith it ! ---
Reaction score
157
yeah, "movement type: fly" is a serious pain
attachment.php
because of this, I cant calculate projectile launch Z for "fly" units when moving over cliffs (or doodads) :(

anyways, for the projectile, I use "movement type: None", it's "Foot" with Collision Turned Off (I guess)
@emjlr3, you're using "movement type: fly" for your projectile, I guess this is the problem

edit: aww, spoiler didnt work :(
 

D.V.D

Make a wish
Reaction score
73
I was playing around with the movement types and i believe fly has a minimum flying height of 100 or so thats hardcoded. Not sure its exact height but its somewhere around there
 

NeuroToxin

New Member
Reaction score
46
Theres no "minimum" fly height. It can be SET to a minimum, but there can't be a set one. @Emjlr3 A quick question for you, does GetLocationZ detect just terrain deformations? If theres a cliff, does it detect that change in height? As I have a good idea for a spell if so.
 

emjlr3

Change can be a good thing
Reaction score
395
not sure about deformations - but cliffs yes

which is the problem - if a missile travels over a cliff, it will increase in height per the height of the cliff, which is just silly
 

WaterKnight

Member
Reaction score
7
As said, change the movement type (umvt) to hover or none. Also set Elevation points/radius (uept/uerd) to 0.
 

emjlr3

Change can be a good thing
Reaction score
395
works with movement type = hover and none, none seems to work slightly better IMO

not sure what the other set point does, did not notice a difference with it on or off
 

NeuroToxin

New Member
Reaction score
46
@emjlr3 I think it does detect terrain deformations, as thats what you use when you set a lightning height.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top