2016-05-22 4 views
1

Я использую формулу для расчета скорости и использую ширину экрана как расстояние и fps как время. Скорость перемещения спрайта по-прежнему отличается при движении по экрану. Как мне изменить формулу, чтобы скорость ощущалась одинаково во всех размерах экрана?Скорость спрайта на холсте различна на разных размерах экрана

public static float distanceX = Screen.width; 
public static float time = 60f ; 
public static float speed = Player.distanceX/Player.time; 

ответ

0

Чтобы ответить на вопрос, вы должны определить, что должно быть «чувствовать». Например, предположим, что устройство удерживается в альбомной ориентации. Устройство 4: 3 намного уже, чем устройство 16: 9, поэтому, если у вас есть куча квадратов, расположенных горизонтально на экране, у вас будет больше их на устройстве 16: 9, чем на устройстве 4: 3.

Если ваша цель - перемещаться с одной стороны экрана на другую в течение постоянного времени, то формула, которую вы показываете в своем вопросе, верна.

Если ваша цель состоит в том, чтобы переместиться через N квадратов в постоянное количество времени, тогда вам нужна другая формула. Похоже, это то, что вы хотите.

Один из подходов заключается в определении независимой от устройства «арены», в которой все перемещается, а затем подгоняется к устройству. Например, вы можете определить, что мир будет 1000x1000, и что все перемещается со скоростью 100 единиц в секунду. Затем вы устанавливаете арену на экран, отсекая сверху и снизу, или бокс по бокам. Платформер с боковой прокруткой обычно соответствует арене на высоту устройства, а затем показывает более широкое или более узкое поле зрения по горизонтали. (Пример такого подхода см. В разделе Android Breakout.)

В соответствующей заметке неразумно предполагать, что устройство имеет определенную фиксированную частоту кадров. Некоторые советы можно найти в this appendix.

+0

Я попробую сделать мир для установки на экран. Благодаря! –

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