안녕하세요 저는 지형이 무한한 터널처럼 보이는 끝없는 사이드 스크롤러 게임을하고 있습니다. 긴 경로는 게임 더 "고르지"가된다 :드로잉 및 스크롤 경로 성능 문제
private void createPaths() {
if(startingPath) {
pathBottom.setLastPoint(0, canvasHeight);
pathTop.setLastPoint(0, 0);
slopeWidth = 0;
slopeHeight = generateRandomNumber(canvasHeight/4, canvasHeight/2);
lastX = 0;
lastY = canvasHeight - slopeHeight;
newX = lastX;
newY = lastY;
startingPath = false;
} else {
lastX = canvasWidth;
lastY = newY;
newX = lastX;
newY = canvasHeight - slopeHeight;
}
pathBottom.lineTo(lastX, lastY);
pathTop.lineTo(lastX, lastY - OFFSET);
do {
lastX = newX;
lastY = newY;
slopeWidth = generateRandomNumber(canvasWidth/8, canvasWidth/2);
newX += slopeWidth;
if(i % 2 == 0) {
slopeHeight = generateRandomNumber(canvasHeight/12, canvasHeight/6);
newY = canvasHeight - slopeHeight;
} else {
slopeHeight = generateRandomNumber(canvasHeight/4, canvasHeight/2);
newY = canvasHeight - slopeHeight;
}
pathBottom.cubicTo(
interpolateLinear(lastX, newX, 0.333f),
lastY,
interpolateLinear(lastX, newX, 0.666f),
newY,
newX,
newY);
pathTop.cubicTo(
interpolateLinear(lastX, newX, 0.333f),
lastY - OFFSET,
interpolateLinear(lastX, newX, 0.666f),
newY - OFFSET,
newX,
newY - OFFSET);
i++;
} while (newX < canvasWidth * 2);
pathBottom.lineTo(newX, canvasHeight);
pathTop.lineTo(newX, 0);
}
및 사용하여 스크롤 :
public void updateTerrain() {
moveX -= speed;
int pos = newX - canvasWidth + moveX;
if(pos > 0) {
Matrix matrix = new Matrix();
matrix.setTranslate(-speed, 0);
pathBottom.transform(matrix);
pathTop.transform(matrix);
} else {
createPaths();
moveX = 0;
}
}
문제는 내가 무작위로이 코드를 사용하여 터널을 생성 할 수 있었다. 나는 약간의 시간이 지나면 그 길에서 그려지는 점들을 줄여야한다고 생각하지만, 솔직히 나는 그것을 어떻게하고 여전히 지형 스크롤을 만들어 내고 생성시키는 지 모른다. 네가 나를 도울 수 있다면 정말 고마워. 감사.
(이하 "시작 인덱스"에서 시작)
어떻게 할 수 있는지 알려주세요. – keysersoze