ActionScript 3.0光线 - 形状交集

时间:2011-03-11 11:50:22

标签: flash actionscript-3 collision-detection intersection

给定一个包含vectorshape(从库中加载)的MovieClip - 有没有办法检查一条线(从点(x1,y2)到点(x2,y2)是否与这个形状相交?

1 个答案:

答案 0 :(得分:0)

这取决于形状。如果它是一个简单的几何形状(或者你可以使用一个进行碰撞),那么你可以在网上使用数百种射线/形状碰撞方法中的一种。

如果它是一个非常特殊的形状,那么你可以做的一件事就是沿着你的光线走,并对你的形状进行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;
}