Не існує методу XNA, який би робив тест на шестикутник.
Ця стаття пояснює, як написати функцію, яка робить тест, і дає вам функцію:
Як перевірити, чи знаходиться точка всередині шестикутника
Ось короткий опис цієї статті:
А функція, яка робить тест, працює так:
- Перевірте обмежувальний ящик навколо шестикутника, на початку, якщо він не перетинає його.
- Перетворіть точку в локальний квадрант, як показано вище.
- Виконайте наступний
isInside
тест для локального квадранта.
public function isInside(pos:Vec2Const):Boolean
{
const q2x:Number = Math.abs(pos.x - _center.x);
const q2y:Number = Math.abs(pos.y - _center.y);
if (q2x > _hori || q2y > _vert*2)
return false;
return 2 * _vert * _hori - _vert * q2x - _hori * q2y >= 0;
}
Детальну інформацію див. У статті.
Ось деякі інші корисні пов’язані джерела: