Actionscript 3 我将动画添加到电影剪辑的时间轴中,现在它不再像以前那样与对象发生碰撞

Actionscript 3 我将动画添加到电影剪辑的时间轴中,现在它不再像以前那样与对象发生碰撞,actionscript-3,flash,animation,movie,clip,Actionscript 3,Flash,Animation,Movie,Clip,我正在为Flash开发AS3平台游戏。当然有一个玩家角色和敌人让他与之互动。在编写代码时,我首先为敌人制作了一个简单的占位符图形。我用密码让敌人在两个保险杠之间来回移动。他还与玩家发生碰撞,将他们送回起始屏幕。现在我的代码已经运行了,我想给敌人添加一些动画,这样他们就可以走路了,而不仅仅是滑冰了。我将动画添加到敌人电影剪辑的时间线中。现在,当我测试游戏时,动画播放良好,敌人开始移动,但他通过第一个保险杠,根本没有与玩家发生碰撞。如果我强制电影剪辑停止而不播放,碰撞将再次开始工作。这是什么原因造成

我正在为Flash开发AS3平台游戏。当然有一个玩家角色和敌人让他与之互动。在编写代码时,我首先为敌人制作了一个简单的占位符图形。我用密码让敌人在两个保险杠之间来回移动。他还与玩家发生碰撞,将他们送回起始屏幕。现在我的代码已经运行了,我想给敌人添加一些动画,这样他们就可以走路了,而不仅仅是滑冰了。我将动画添加到敌人电影剪辑的时间线中。现在,当我测试游戏时,动画播放良好,敌人开始移动,但他通过第一个保险杠,根本没有与玩家发生碰撞。如果我强制电影剪辑停止而不播放,碰撞将再次开始工作。这是什么原因造成的

这是.fla文件主时间线内的代码

addEnemiesToLevel1();
addBumpersToLevel1();

function addEnemiesToLevel1():void
{
    addEnemy(700, -54);
    addEnemy(1341, -54);
    addEnemy(2187, -54);
}

function addBumpersToLevel1():void
{
    addBumper(900, -80);
    addBumper(644, -80);
    addBumper(1135, -90);
    addBumper(1380, -90);
    addBumper(2053, -90);
    addBumper(2226, -90);
}


    function addEnemy(xLocation:int, yLocation:int):void
{
    var enemy:Enemy = new Enemy(xLocation, yLocation);
    back.addChild(enemy);
    enemy.addEventListener(Event.REMOVED, enemyRemoved);
    enemyList.push(enemy);
}


function addBumper(xLocation:int, yLocation:int):void
{
    var bumper:Bumper = new Bumper(xLocation, yLocation);
    back.addChild(bumper);
    bumper.visible = false;
    bumperList.push(bumper);
}

//corralling the bad guys with bumpers
    if (enemyList.length > 0){ //enemies left in the enemyList?
        for (var k:int = 0; k < enemyList.length; k++){ // for each enemy in the enemyList
            if (bumperList.length > 0){
                for (var h:int = 0; h < bumperList.length; h++){ // for each bumper in the List
                    if ( enemyList[k].hitTestObject(bumperList[h]) ){
                        enemyList[k].changeDirection();
                        }
                    }
                }
            }
        }

//player and enemy collisions
    if (enemyList.length > 0){ //enemies left?
        for (var m:int = 0; m < enemyList.length; m++){ // for each enemy in the enemyList
            if ( enemyList[m].hitTestObject(player) ){
                trace("player collided with enemy");
                gotoAndStop(4);                     
                enemyList[m].removeSelf();
            }
        }
    }
}

我遇到了一个与此非常相似的问题: 我的问题是,在我为角色设置动画后,我的角色的生命点无法工作。然而,这不是因为动画,而是因为我的角色旋转代码。我用scaleX来翻转角色。但是,这也翻转了角色中嵌套的点,这些点用于处理我的碰撞。我注意到您还翻转了角色的比例:

public function changeDirection():void{
        trace("x ="+x);
        flip++;
        this.scaleX *= -1;
    }
也许你和我有同样的问题。如果是,请暂时删除这行代码:

this.scaleX *= -1;
…看看会发生什么…我们可以从那里知道下一步该做什么


德雷克·斯瓦齐(Drake Swartzy)

去掉了刻度线,运气不好。敌人现在进行月球行走:。我使用hitTestObject而不是point来进行敌方碰撞,这会有区别吗?是的,我的错。我应该检查一下你使用的碰撞检测方法。当你为坏人制作动画时,你对代码做了什么改变?也许这将帮助我们回答这个问题。没有,代码最初是通过一个简单的静态电影剪辑实现的,并且运行良好。我所做的唯一的补充是,我在敌人电影剪辑的时间线中添加了一些帧,用于它的行走循环。奇怪……如果我发现了这个,我会通知你的
this.scaleX *= -1;