1

我有一个敌人击中了一堆瓷砖,如果敌人击中它们,我会通过一个循环检查所有瓷砖。我追踪它们,有些人会告诉我这是真的还是假的。我希望能够让敌人从那些真实的东西中随机选择,然后继续那些瓷砖。它跟踪与敌人接触的所有瓷砖,问题是,我不确定如何将那些注册为真实的瓷砖放入自己的数组中,然后让敌人随机移动到这些瓷砖中。

 for (var j:int = 0; j < tileset.length; j++){
     trace(tileset[j].currentFrameLabel, tileset[j].hitTestObject(enemy));
     if (tileset[j].hitTestObject(enemy) && !tileset[j].hitTestObject(player)){
                 options.push(Boolean(true));
            }

编辑:这是我的计时器功能,每 5 秒,我希望敌人移动到可用的瓷砖。虽然你看不到tileset,但它是一个数组,等于movieclip,它是一个tile,它本身就在一个for循环中。所以基本上,tileset 是 49 个 tile 的影片剪辑。我将那些可用的图块推入另一个数组,即选项。然后我创建了一个名为enemyPick 的变量作为计数器。这就是我有多远。

function timerenemy (event:TimerEvent) {

                    var options:Array = [];

                    for (var j:int = 0; j < tileset.length; j++){
                        if (tileset[j].hitTestObject(enemy) && ! tileset[j].tileMiddle.hitTestObject(player)) {
                            //trace(tileset[j].currentFrameLabel, tileset[j].hitTestObject(enemy));
                            tileset[j].outline.gotoAndStop("attack");
                            options.push(tileset[j]);
                        }

                        if (options.length > 0){
                            var enemyPick:int = Math.floor(Math.random()*options.length)

                        }

                    }
                    trace(enemyPick, options);
            }
4

1 回答 1

1

首先,创建一个数组,其长度是可接受的瓷砖的最大数量。例如,在直线瓷砖中,一次可能只有两个可用。现在,每次你需要让敌人移动瓷砖时,将计数器初始化为 0。然后,循环遍历每个瓷砖,并“询问”它是否接触到敌人。如果是,将其记录在array[counter]中,并增加counter。循环结束后,从 0 到 (counter) 中选择一个随机数,并使用 array[random number] 作为敌人移动到的图块。

于 2013-05-23T19:15:32.973 回答