Javascript 如何让精灵拥有自主性?
我有一个关于精灵自主移动的问题,也就是说,从某些条件出发,精灵在地图上以最简单、最理想的方式移动 假设我有一个相位器,由7个精灵组成的团队在迷宫中移动(TileMap),必须穿过迷宫,不一定要到达特定的目标(比如吃豆人的幽灵),但当他们到达十字路口时,选择一条随机路径。我是这样做的:在update()中,我调用一个函数“mobilizeSprite()”,这个函数包含一个在整个组中运行的ForEach循环,在这个循环中,我必须将精灵的坐标与数组的坐标进行比较,如果它们在这个位置上,则意味着在这个位置上可以选择一条随机路径(向上、向下、向左或向右)但它会继续它以前的方式 我的代码真的是最优的吗?因为如果我向组中添加更多的精灵,那么消耗量会大得多,这在函数update()中实现了,有没有更简单的方法?我正在考虑绕过ForEach为每个精灵添加一个计时器(如调度器),但是我不知道这是否可行 代码如下:Javascript 如何让精灵拥有自主性?,javascript,phaser-framework,Javascript,Phaser Framework,我有一个关于精灵自主移动的问题,也就是说,从某些条件出发,精灵在地图上以最简单、最理想的方式移动 假设我有一个相位器,由7个精灵组成的团队在迷宫中移动(TileMap),必须穿过迷宫,不一定要到达特定的目标(比如吃豆人的幽灵),但当他们到达十字路口时,选择一条随机路径。我是这样做的:在update()中,我调用一个函数“mobilizeSprite()”,这个函数包含一个在整个组中运行的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…这个问题更适合这个问题更适合这个问题