2013-09-30 2 views
0

У меня есть простая функция, которая увеличивает скорость моего объекта на экране:игр Android холста, скорость игры

float Velocity = 10; 
float MaxVelocity = 100; 
float VelocityGiven = 0; 

RectF position = new RectF(ScreenHeight/2, ScreenWidth,0,0); 

public void update() 
{ 
    if(VelocityGiven < MaxVelocity) 
    { 
      Position.left -= Velocity; 
      VelocityGiven += Velocity; 
    } 

} 

public void draw(Canvas canvas) 
{ 
     canvas.drawBitmap(Bitmap,Position,null); 
} 

Но в зависимости от размера экрана телефона, или плотности пикселей, эта функция перемещает объект слишком быстро или слишком медленно.

если я попробую это на галактике S4, ведьма имеет действительно большое разрешение экрана, объект идет медленно.

Но если я попробую на устройстве с низким уровнем (маленькие экраны), объект будет очень быстрым, Что я могу сделать, чтобы этого избежать?

У меня уже есть FPS, на каждом телефоне это работает на 30 FPS. поэтому речь идет не о коэффициенте обновления.

+0

не нужно писать все жирным шрифтом. – WarrenFaith

ответ

1

Это зависит от того, что вы хотите сделать точно. Один простой подход - сделать все пропорциональным размеру экрана. Например:

Position.left -= Velocity * getWidth()/REFERENCE_WIDTH; 

где REFENRENCE_WIDTH соответствует разрешению экрана, где ваше приложение ведет себя, как вам нравится.

+0

Спасибо, человек, это было очень ясно, и я решил его решить. – Moondustt

0

Вам необходимо работать с независимыми от плотности единицами. Таким образом, он перемещает одну и ту же относительную величину независимо от размера пикселя. Чтобы сделать это, решите, насколько «большой» будет ваша область. Например, чтобы исправить вашу ширину в течение логических 1000 единиц:

float scaleWidth = (screenWidth/1000); 
float velocity = 10 * scaleWidth; 
float maxVelocity = 100 * scaleWidth; 

Это означает, что независимо от того, насколько широкий дисплей на самом деле, при скорости макс потребуется 10 движений, чтобы пройти весь путь через.

0

Возможно, вам лучше всего переместить объекты на основе сетки, не зависящей от размера экрана. Вы могли бы метры, ноги или то, что когда-либо работало как ваше подразделение. Затем получите размер экрана и разрешение экрана устройства и выясните, что это за отношения. Если ваш объект перемещается на одну ногу, сколько пикселей на нем. Основано на разрешении.

Вот очень общий обзор по размерам экрана для андроида: http://developer.android.com/guide/practices/screens_support.html

Есть, вероятно, намного больше, и лучше, чтобы искать места для получения разрешения устройства и размера.

Надеюсь, что по крайней мере вы начнете :)

Смежные вопросы