과제를 수행 한 후 작은 뱀 복제본을 구축하여 libGDX 를 시작하면 잠시 후 부끄러운 문제가 발생합니다.
나는 현재 게임의 캔버스 주위를 움직이는 뱀의 머리 (이 단계에서 간단한 사각형)를 가지고 있습니다. 뱀의 나머지 부분을 만드는 가장 간단한 방법은 헤드에 플레이어가하는 것에 따라 크기가 증가 / 감소되는 SnakeElements의 Java Collections 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;
}
}
불행히도이 동작이 발생합니다.
올바르게 작동하는 뱀 꼬리를 만드는 방법에 대한 팁은 대단히 감사하겠습니다. :)