首页 > 解决方案 > 我正在尝试让一个 MovieClip 跟随另一个 MovieClip 直到联系。一个影片剪辑按加速度计移动

问题描述

这是我的代码的一部分,但敌人仍然没有跟随这艘船。知道我能做什么吗?船通过加速度计移动,敌人从屏幕上的 -y 生成。一些帮助将不胜感激

        //Move Enemies towards Player//
        var speed = 5;
        if( enemies.x < ship.x )
{
    if( enemies.x + enemies.speedX > ship.x )
    {
        enemies.x = ship.x;
    }
    else
    {
        enemies.x += enemies.speedX;
    }
}
else if( enemies.x > ship.x )
{
    if( enemies.x - enemies.speedX < ship.x )
    {
        enemies.x = ship.x;
    }
    else
    {
        enemies.x -= enemies.speedX;
    }
}

if( enemies.y < ship.y )
{
    if( enemies.y + enemies.speedY > ship.y )
    {
        enemies.y = ship.y;
    }
    else
    {
        enemies.y += enemies.speedY;
    }
}
else if( enemies.y > ship.y )
{
    if( enemies.y - enemies.speedY < ship.y )
    {
        enemies.y = ship.y;
    }
    else
    {
        enemies.y -= enemies.speedY;
    }
}

        //move enemies//
        if (enemies.length != 0) {
            for (var j: int = 0; j < enemies.length; j++) {
                enemies[j].y += 5;
            }
        }

提前致谢...

标签: actionscript-3actionscript

解决方案


我同意Organis。Enemies 看起来确实是一个数组,因此要访问他们的 x 和 y,您需要enemys[0].x。为了解决这个问题,我将 x 位置放在一个 for 循环中,就像你对 y 坐标一样。

或者,根据您有多少敌人,我会为敌人添加一个类。这样一个敌人就会产生并通过它的类知道该怎么做。我认为这会更简单,因为当敌人被移除时它不需要整理数组。您还可以对其进行调整,以便每个敌人都有一个随机的速度值,从而获得更多动态结果。

祝你好运

编辑:

好吧,那是我的错,刚刚意识到我不是很清楚。我要说的是:

 //move enemies//
    if (enemies.length != 0) {
        for (var j: int = 0; j < enemies.length; j++) {
            enemies[j].y += 5;
        }
    }

工作正常。每个敌人一旦被引用就会移动 5。为什么不将其余代码复制并粘贴到此循环中,而不是使用敌人.x 使用敌人[j].x。

我确实认为每个敌人的班级会是一个更好的解决方案,我认为你应该看看它。

希望这更有意义并再次道歉。


推荐阅读