Как переместить растровое изображение фона с различной скоростью? - PullRequest
0 голосов
/ 06 июля 2019

Я столкнулся с необъяснимой проблемой. Это может привести к недостатку в андроид студии.

В основном: я занимаюсь разработкой игры, в которой фон (трава или деревья) движется в направлении, противоположном игроку, довольно просто. Они оба (трава и игрок) являются растровыми изображениями в классе GameView, которые расширяют класс View. Игрок стоит на месте, а трава движется влево.

Проблема начинается, когда я хочу, чтобы трава двигалась с РАЗЛИЧНОЙ скоростью. VARYING является ключевым словом здесь. Что происходит, когда растровое изображение травы достигает левого края экрана, его скорость уменьшается без всякой причины! Это не происходит, когда скорость травы постоянна.

Понятия не имею, как преодолеть эту проблему. В основном моя цель - включить: игрок идет быстрее = трава движется быстрее. Я бы хотел, чтобы вы решили вышеуказанную проблему или предложили альтернативные решения.

Я не показываю код, управляющий плеером, чтобы было яснее понять, в чем проблема. Проблема полностью представлена ​​в следующем фрагменте кода:

public class GameView extends View 
{
   Bitmap trees; 
   int treeY, treeX, U;                      //position and velocity
   int treeWidth, screenWidth, screenHeight;
   Point point;

public GameView(Context context, AttributeSet atr) 
{
   super(context, atr);

   trees = new Bitmap();
   trees = BitmapFactory.decodeResource(getResources(), R.drawable.t1);
   treeWidth = trees.getWidth();
   U = 0;
   point = new Point();
   screenHeight = point.y;
   screenWidth = point.x;
   treeY = 8*screeHeight/10
   treeX = screenWidth;
}

    @Override
    protected void onDraw(Canvas canvas) 
    {
        super.onDraw(canvas);

        U += 1/8000;
        treeX -= U/2;
        if(treeX < -treeW) 
        {
         treeX = screenWidth;
        }   
        // just looping the trees Bitmap

        canvas.drawBitmap(trees, treeX, treeY, null);

    }
}
...