我正在使用Phaser开发一款JavaScript游戏,其中玩家获取blob,然后blob跟随玩家。所以在玩家的移动之后会有一串精灵,有点像"options" in Gradius或the game Zuma中的球线。
我的问题是,获得这种效果的最佳方法是什么? 目前我的方法是这样的:
它有效,但我怀疑手机上的性能会有问题,因为即使在笔记本电脑上它也有时会滞后。此外,当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];
}
}