Если вы можете получить информацию о местности, по которой вы идете, также можно получить информацию об угле местности.
Ландшафт существует из разных треугольников, так как это сетка. Каждый треугольник имеет 3 вершины, но также имеет так называемое: normal .
Нормаль лица - это направление вверх. С помощью простых вычислений угла вы можете проверить, слишком ли велик угол или нет.
// in pseudo code:
public bool TooSteep(Vector3 position, float maxAngle)
{
// get your information from the terrain
// there is probably some function, or you have to write it,
// that returns the normal from the terrain
Vector3 normal = myTerrain.GetNormal(position);
// then we calculate the angle between the 'up'-vector and our normal vector
if (Vector3.Angle(normal, Vector3.up) > maxAngle)
return true;
else return false;
}
Итак, предположим, что наш максимальный угол составляет 45 градусов, и мы имеем очень крутой нормальный. Угол между вектором вверх и нормалью будет большим. Больше нашего maxAngle
и поэтому вернется: да, он слишком крутой.