给定一个包含vectorshape(从库中加载)的MovieClip - 有没有办法检查一条线(从点(x1,y2)到点(x2,y2)是否与这个形状相交?
答案 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;
}