~~NOTOC~~ <=[[4rpl:start| Index]] ====== MoveTowardsAndAvoid ====== MoveTowardsAndAvoid(<-start <-target <-delta <-minHeight <-checkRange <-checkCreeper <-checkAC <-checkPseudoTerrain) ->pos ===== Description ===== Takes a starting 3D position (a 3-vector) and generates a new 3D position that is moved towards the target (also a 3-vector). The resulting point will not be displaced more than the delta argument. * The delta is simply the speed (in cells) this unit moves per game frame. * The minHeight argument restricts how close, height wise, the resulting point can be to the terrain and/or creeper. * The checkRange argument is an integer that specifies how many cells outward to inspect when enforcing the minHeight. A value of 0 means to only check the map cell that the target is currently within on. * The checkCreeper argument is a Boolean indicating whether to look at creeper for enforcing the minHeight. * The checkAC argument is a Boolean indicating whether to look at anticreeper for enforcing the minHeight. * The checkPseudoTerrain argument is a Boolean indicating whether to look at invisible pseudo terrain (like a shield creates) for enforcing the minHeight. ===== Examples ===== #Move a unit towards a destination and crawl over creeper, anticreeper, and shields GetTerrainVector(42 23) ->target 0.1 ->speed 1 ->minHeight SetUnitPosition(self MoveTowardsAndAvoid(GetUnitPosition(self) <-target <-speed <-minHeight 1 true true true)) <=[[4rpl:start| Index]]