2017-01-31 6 views
1

В настоящее время я работаю над модой для игры Unturned, который работает на Unity Engine. Мод почти готов, но у меня есть некоторые проблемы с моим классом Area. Он представляет прямоугольную область, которая построена с учетом двух диагональных точек. An ImageНайти, если область содержит определенный вектор3

Проблемная часть Contains(Vector3) метод, который не работает.

public class Area 
    { 
    public Vector3 A; 
    public Vector3 B; 

    public Area(Vector3 A, Vector3 B) 
    { 
     this.A = A; 
     this.B = B; 
    } 

    public bool Contains(Vector3 player) 
    { 
     return Vector3.Distance(A, B) >= Vector3.Distance(player, A) 
      && Vector3.Distance(A, B) >= Vector3.Distance(player, B); 
    } 
} 

Может кто-нибудь сказать мне, как исправить метод Contains? Я что-то упускаю? BTW: Althogh im, используя Vector3, im, говорящий о 2D пространстве!

+0

У вас проблема геометрическая. Учитывая 2 балла, вы можете определить бесконечное количество прямоугольников, которые имеют эти точки в качестве противоположных краев – apomene

+0

@apomene, поэтому я должен определить четыре точки? – nickkoro

+0

Попробуйте что-то вроде этого:. BOOL GameObjects :: Body :: isInRectangle (константный IRR :: основной :: vector2df & objectPositionToCheck, двойной радиус) { возврата this-> Позиция() X> = objectPositionToCheck.X - радиус && this-> Position(). X <= objectPositionToCheck.X + radius && this-> Position(). Y> = objectPositionToCheck.Y - radius && this-> Position(). Y <= objectPositionToCheck.Y + radius; } – user743414

ответ

0

Это не лучший способ, но он работает!

public bool Contains(Vector3 player) 
{ 
    float tax, tay, tbx, tby; 
    if(a.x > b.x) { tax = a.x; tbx = b.x; } else { tax = b.x; tbx = a.x; } 
    if(a.y > b.y) { tay = a.y; tby = b.y; } else { tay = b.y; tby = a.y; } 
    return (player.x < tax && player.x > tbx && player.y < tay && player.y > tby) 
} 
+0

Не работает для меня :( – nickkoro

+0

Извините, небольшая ошибка в>< – driconmax

+0

Готов! Исправлено сейчас – driconmax

Смежные вопросы