Javascript 一连串的移动精灵跟随玩家,最有效的方法是什么?
我正在使用Phaser开发一个JavaScript游戏,玩家拾取水滴,然后跟随玩家。所以会有一连串的精灵跟随玩家的动作,有点像球或球线 我的问题是,获得这种效果的最佳方式是什么? 目前我的方法是这样的:Javascript 一连串的移动精灵跟随玩家,最有效的方法是什么?,javascript,optimization,phaser-framework,Javascript,Optimization,Phaser Framework,我正在使用Phaser开发一个JavaScript游戏,玩家拾取水滴,然后跟随玩家。所以会有一连串的精灵跟随玩家的动作,有点像球或球线 我的问题是,获得这种效果的最佳方式是什么? 目前我的方法是这样的: 保持x/y位置的大数组 对于每个帧更新,转到下一个数组索引 将玩家的x/y位置放在当前索引的数组中 对于每个blob,保留一个单独的数组索引,并从该索引复制x/y位置 这是可行的,但我怀疑移动设备的性能会有问题,因为即使在笔记本电脑上,它有时也会落后。此外,当BLOB行变长时,需要调整数组的大
function create() {
// create the guy
_grpblobs = game.add.group();
_thedude = game.add.sprite(0, 0, 'phaserdude');
_idxoff = 0;
// add blobs
for (var i=0; i<40; i++) {
var blob = game.add.sprite(0, 0, 'orbs', (i%6));
_grpblobs.add(blob);
};
// array to keep track of positions
for (var i=0; i<1000; i++) {
_blobpos[i] = 0;
};
// mouse input for testing
window.addEventListener("mousemove", onGameMouseMove);
}
function onGameMouseMove(evt) {
_thedude.x = evt.x;
_thedude.y = evt.y;
}
function update() {
// the main guy current position
_blobpos[_idxoff] = _thedude.x;
_blobpos[_idxoff+1] = _thedude.y;
// -2 because it's 2 values; x value and y value
_idxoff = _idxoff - 2;
if (_idxoff < 0) _idxoff = _idxoff + 1000;
// update blob positions
for (var i=0; i < _grpblobs.length; i++) {
var idx = _idxoff + ( (i+1) * 20);
idx = idx % 1000;
_grpblobs.children[i].x = _blobpos[idx];
_grpblobs.children[i].y = _blobpos[idx+1];
}
}
函数创建(){
//创造这个家伙
_grpblobs=game.add.group();
_thedude=game.add.sprite(0,0,'phaserdude');
_idxoff=0;
//添加斑点
对于(var i=0;i