hitTest检查影片剪辑而不检查其父级

时间:2014-05-01 09:58:13

标签: actionscript-3 flash

我要做的是检查名为enemy的影片剪辑实例与名为laser的影片剪辑实例的碰撞(位于名为ship的影片剪辑中)。

当敌人与船发生碰撞时,我希望主时间轴转到第2帧。

当敌人与激光碰撞时,我希望主时间轴转到第3帧。

问题是当ship.laser与敌人发生碰撞时,它也会像船只与敌人发生碰撞一样。

有没有办法在不检查船只和敌人的情况下检查ship.laser和敌人的碰撞?

addEventListener(Event.ENTER_FRAME, collide);
function collide(event:Event)
{
    if (enemy.hitTestObject(ship) )
    {
        gotoAndStop(2);
        trace("hit Ship");

    }

    if (enemy.hitTestObject(ship.laser))
    {
        trace("hit laser");
        gotoAndStop(3);

    }
}

1 个答案:

答案 0 :(得分:1)

如果敌人与激光碰撞,它也会与船发生碰撞,这是正常的,因为激光是船的一部分。

你能做的只是检查敌人是否与激光相撞:

if (enemy.hitTestObject(ship) )
{
    if (enemy.hitTestObject(ship.laser))
    {
        // collides with ship AND laser
    } else {
        // collides with ship only, but not with the laser
    }
}