xna мешает спускаться по склонам или слишком крутым склонам - PullRequest
3 голосов
/ 30 марта 2012

как я могу предотвратить спуск по склонам или по склонам, которые слишком крутые на карте высот?У меня есть 3D-камера, которая движется по местности, теперь она движется в любом месте, даже на больших склонах и на слишком крутых склонах, что я могу сделать?

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Вы должны предсказать, где вы окажетесь, если попытаетесь двигаться в направлении, а затем выяснить, не слишком ли крутой наклон между вашей текущей точкой и вашей будущей точкой:

if(forward key pressed) {
    get location I'll end up at
    get the Z of that location
    calculate slope using rise/run formula
    if(slope is too steep) {
        don't move
    }
    else { move to the future location }
}
1 голос
/ 31 марта 2012

Я бы избегал подъемов / пробежек, поскольку они могли бы создавать NaN, если местность вертикальная.

//currentPosition & targetPosition should be known to you

Vector3 potentialMove = Vector3.Normalize(targetPosition - currentPosition);

float steepness = Vector3.Dot(Vector3.Up, potentialMove);
if( steepness < 0.85f && steepness > -0.85f) // set to taste. 1 is vertically up, 0 is flat, -1 is vert down
{
  //allow move
  currentPosition = targetPosition
}
...