我们有一个与另一个对象(mc_left)发生碰撞的对象(mc_robert)。发生碰撞时,我们会采取行动。我们要弄清楚的是如何更改对象的碰撞盒(mc_robert),以便在碰撞检测到时对象重叠。我们不希望对象的默认碰撞框(mc_robert)。我们将非常感谢您提供的任何帮助。
这就是我们目前的代码:
var numX:Number = 0;
var numY:Number = -2;
addEventListener(Event.ENTER_FRAME,loop);
function loop(e:Event)
{
mc_robert.y += numY;
mc_robert.x += numX;
if (mc_robert.hitTestObject(mc_left))
{
numX = -2;
numY = 0;
mc_robert.rotation = -90;
}
}
答案 0 :(得分:0)
对于像素完美碰撞,将形状转换为BitmapData并使用BitmapData的Hit-test方法。
如果您不想执行上述方法,可以使用hitTestPoint并在for循环中创建多个点来进行冲突。
例如:没有测试过以下代码,但概念就在那里。这将创建一个边界框,或者您可以使用一些触发器从圆圈中碰撞或自定义创建点。
for(var y:int = 0;y<2;y++){
for(var x:int=0;x<2;x++){
var w:int = mc2.width*x;
var h:int = mc2.height*y;
if(mc1.hitTestPoint(mc2.x+w, mc2.y+h, true)){
trace("collides");
}
}
}
我用来获得最佳精度的解决方案是BitmapData碰撞。