Недавно я начал разрабатывать игру с использованием Libgdx, потому что с его встроенной природой OpenGL я подумал, что могу ожидать лучшего рендеринга, чем то, что я получаю из игр, построенных в библиотеке Java. < /p>
Однако я сразу столкнулся с проблемой. Я проверил перемещение изображения логотипа Badlogic по умолчанию, а затем заметил, что его движение не совсем плавное. Это не ужасно задержка или что -то в этом роде, но я определенно могу видеть какое -то тонкое заикание каждый часто часто. < /P>
Вот мой код: < /p>
package com.mygdx.game;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.ScreenUtils;
public class MyGdxGame extends ApplicationAdapter {
SpriteBatch batch;
Texture img;
Vector2 pos;
float speed;
@Override
public void create () {
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
pos = new Vector2();
speed = 300f;
}
@Override
public void render () {
float deltaTime = Gdx.graphics.getDeltaTime();
//System.out.println("deltaTime:"+deltaTime);
if(Gdx.input.isKeyPressed(Input.Keys.LEFT)){
pos.x -= deltaTime * speed;
}
if(Gdx.input.isKeyPressed(Input.Keys.RIGHT)){
pos.x += deltaTime * speed;
}
ScreenUtils.clear(1, 0, 0, 1);
batch.begin();
batch.draw(img, pos.x, pos.y);
batch.end();
}
@Override
public void dispose () {
batch.dispose();
img.dispose();
}
}
< /code>
Как я переместил логотип: < /p>
[*] Получите время дельта в методе рендеринга с помощью:
float deltatime = gdx.graphics.getdeltatime ();
На основе ввода ключа (слева/справа), умножьте Deltatime на значение скорости и добавьте к значению x логотипа;
Нарисуйте логотип на основе обновленного x. < /li>
< /ul>
Это все, что я сделал. Я также попытался добавить фиксированное значение (pos.x += 5f;) без использования времени Delta, но результат был таким же. Я все еще мог видеть какое -то тонкое заикание в его движении. "Введите описание изображения здесь" src = "https://i.sstatic.net/jgnbb02c.jpg"/>
Как вы можете видеть с изображения, длина каждого кадра равен Примерно от 0,0167 до 0,0183.
Это подводит меня к двум вопросам: < /p>
FPS проекта установлен на 60, поэтому каждый кадр должен быть 1 / / 60 = 0,0166 ... Второе. Таким образом, каждый кадр занимает немного больше времени, чем предполагалось. Между кадрами, и я подозреваю, что это может быть причиной заиканий. Библиотека Java (Thread, System.nanotime и т. Д.) /> < /p>
В этом случае каждый кадр занимает от 0,01666665 до 0,166668, поэтому разница составляет около 0,0000003, что намного меньше, чем Libgdx 0,0015. И изображение движется более плавнее с этим игрой. Run - довольно простая программа, поэтому я немного запутался. Как я уже говорил в начале, главной привлекательностью Libgdx для меня была лучшая производительность рендеринга, но я не получаю его. < /P>
Я что -то упускаю? Без этой проблемы я действительно люблю libgdx, поэтому я надеюсь решить это и продолжать развиваться с ним.
Подробнее здесь: https://stackoverflow.com/questions/793 ... mple-image
Наблюдаю некоторое заикание даже при перемещении простого изображения. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
(LibGDX) Наблюдаю некоторые заикания даже при перемещении простого изображения.
Anonymous » » в форуме JAVA - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-