В настоящее время я работаю над модой для игры Unturned, который работает на Unity Engine. Мод почти готов, но у меня есть некоторые проблемы с моим классом Area
. Он представляет прямоугольную область, которая построена с учетом двух диагональных точек. Найти, если область содержит определенный вектор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 пространстве!
У вас проблема геометрическая. Учитывая 2 балла, вы можете определить бесконечное количество прямоугольников, которые имеют эти точки в качестве противоположных краев – apomene
@apomene, поэтому я должен определить четыре точки? – nickkoro
Попробуйте что-то вроде этого:. 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