割り当てに従って、小さなSnakeクローンを作成することでlibGDXを使い始めたところ、おそらくしばらくの間恥ずかしい問題に遭遇しました。
現在、ヘビの頭(この段階では単純な長方形)がゲームのキャンバスの周りを移動しています。ヘビの残りの部分を構築する最も簡単な方法は、頭に、プレーヤーの動作に応じてサイズが増減するSnakeElementsのJavaコレクションLinkedListを所有させることでした。
SnakeElementsのこのリストを頭につけることは簡単ではありません。
これを行う現在の関数は次のとおりで、ヘッドがその位置を更新するたびに呼び出されます。
private void moveTail (float x, float y, int direction) {
float tmpx, tmpy;
int tmpdirection;
int offset_x, offset_y;
for (SnakeSegment snse : tail) {
offset_x = 0;
offset_y = 0;
tmpx = snse.getX();
tmpy = snse.getY();
tmpdirection = snse.getDirection();
switch(direction) {
case 0:
offset_x = 0;
offset_y = -(2 + snse.width);
break;
case 1:
offset_x = -(2 + snse.width);
offset_y = 0;
break;
case 2:
offset_x = 0;
offset_y = (2 + snse.width);
break;
case 3:
offset_x = (2 + snse.width);
offset_y = 0;
break;
default:
System.out.println("wrong direction");
}
snse.setX(x + offset_x);
snse.setY(y + offset_y);
snse.setDirection(direction);
x = tmpx;
y = tmpy;
direction = tmpdirection;
}
}
残念ながらこの動作になります:
正しく機能するヘビの尾を作成する方法についてのヒントは大歓迎です:)