ActionScript 3.0 ray - пересечение формы - PullRequest
0 голосов
/ 11 марта 2011

при наличии мувиклипа, содержащего векторную форму (загруженную из библиотеки) - есть ли способ проверить, пересекает ли линия (от точки (x1, y2) до точки (x2, y2) эту форму?

1 Ответ

0 голосов
/ 11 марта 2011

Это действительно зависит от формы. Если это простая геометрическая фигура (или вы можете использовать ее для столкновения), то вы можете использовать один из сотен методов столкновения луча / формы в сети.

Если это очень специфическая фигура, то одна из вещей, которую вы можете сделать, это пройтись по вашему лучу и выполнить вызовы hitTestPoint () для вашей фигуры. Примерно так (грубо):

var ray:Point = new Point( x2 - x1, y2 - y1 ); // get the ray

// we want to check in, say 10 steps. depending on the length of the ray, you can increase/decrease this
var steps:int = 10;

// scale the ray
ray.x /= steps;
ray.y /= steps;

// step along the ray
var start:Point = new Point( x1, y1 );
for( var i:int = 0; i < steps; i++ )
{
    // hit test against the shape
    if( myShape.hitTestPoint( start.x, start.y, true ) )
    {
        // it's intersecting, do something
        break;
    }

    // it didn't intersect, keep going
    start.x += ray.x;
    start.y += ray.y;
}
...