如何在动作脚本3中更改影片剪辑的hitbox以不使用边界框?

时间:2014-02-12 23:32:19

标签: actionscript-3 flash collision-detection collision

我们有一个与另一个对象(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;
    }
  }

1 个答案:

答案 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碰撞。