Javascript 如何让精灵拥有自主性?

Javascript 如何让精灵拥有自主性?,javascript,phaser-framework,Javascript,Phaser Framework,我有一个关于精灵自主移动的问题,也就是说,从某些条件出发,精灵在地图上以最简单、最理想的方式移动 假设我有一个相位器,由7个精灵组成的团队在迷宫中移动(TileMap),必须穿过迷宫,不一定要到达特定的目标(比如吃豆人的幽灵),但当他们到达十字路口时,选择一条随机路径。我是这样做的:在update()中,我调用一个函数“mobilizeSprite()”,这个函数包含一个在整个组中运行的ForEach循环,在这个循环中,我必须将精灵的坐标与数组的坐标进行比较,如果它们在这个位置上,则意味着在这个

我有一个关于精灵自主移动的问题,也就是说,从某些条件出发,精灵在地图上以最简单、最理想的方式移动

假设我有一个相位器,由7个精灵组成的团队在迷宫中移动(TileMap),必须穿过迷宫,不一定要到达特定的目标(比如吃豆人的幽灵),但当他们到达十字路口时,选择一条随机路径。我是这样做的:在update()中,我调用一个函数“mobilizeSprite()”,这个函数包含一个在整个组中运行的ForEach循环,在这个循环中,我必须将精灵的坐标与数组的坐标进行比较,如果它们在这个位置上,则意味着在这个位置上可以选择一条随机路径(向上、向下、向左或向右)但它会继续它以前的方式

我的代码真的是最优的吗?因为如果我向组中添加更多的精灵,那么消耗量会大得多,这在函数update()中实现了,有没有更简单的方法?我正在考虑绕过ForEach为每个精灵添加一个计时器(如调度器),但是我不知道这是否可行

代码如下:

...
update: function() {
        movilizeSprite();
}
...
mobilizeSprite: function() {
        this._enemies.forEach(function(enemy) {

                if (enemy.name == 'ship') {
                    var position = Math.round(enemy.body.x)+','+Math.round(enemy.body.y),
                        index = this._crossroads.indexOf(position);

                    if ((index != -1 && index % 2 == 0) || enemy.body.speed == 0) {
                        enemy.body.velocity.x = 0;
                        enemy.body.velocity.y = 0;
                        this._movements[this.rnd.integerInRange(0, (this._movements.length-1))](enemy);
                    }
                }
        }, this);
} 
这个。\移动:这是一个有四个函数的数组,每个函数接收精灵作为参数并移动它,如果索引为0,则将其向右移动,如果索引为1,则将其向左移动,等等


这个。_crossroads:它是一个包含所有十字路口和航路点坐标的数组,这种安排对于知道精灵是否可以走另一条路径至关重要。问题是十字路口的位置是偶数索引(x%2):0,2,4,6…

这个问题更适合这个问题更适合这个问题