Я делаю игру, где мне нужно перетаскивать объекты экрана. Я создаю объекты Screen, используя метод SpriteBatch.draw (....), где я использую вращение, используя только один регион текстуры. Мне нужно реализовать drag on object, но я не могу запустить компонент перетаскивания. Перетаскивание в libgdx на SpriteBatch
ответ
package com.dance.utils;
import com.badlogic.gdx.input.GestureDetector;
import com.badlogic.gdx.input.GestureDetector.GestureListener;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.dance.screen.GameScreen;
public class GameTouchProcessor
{
private GameScreen gameScreen;
Vector3 touchPoint=new Vector3();
Vector3 relativeTouchPoint=new Vector3();
Vector2 lastPosition = new Vector2();
GestureListener listner=new GestureListener()
{
@Override
public boolean zoom(float arg0, float arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean fling(float arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean longPress(float arg0, float arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean pan(float arg0, float arg1, float arg2, float arg3) {
if(gameScreen.isPlayerDraged)
{
gameScreen.cam.unproject(relativeTouchPoint.set(arg0, arg1, 0));
GameScreen.position.set(lastPosition.x + relativeTouchPoint.x - touchPoint.x, lastPosition.y + relativeTouchPoint.y - touchPoint.y);
}
return false;
}
@Override
public boolean panStop(float arg0, float arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean tap(float arg0, float arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDown(float arg0, float arg1, int arg2, int arg3) {
gameScreen.cam.unproject(touchPoint.set(arg0, arg1, 0));
lastPosition.set(GameScreen.position); //HERE POSITION IS A VECTOR2 I AM DRAWING MY OBJECT ON THIS POSITION SO WHEN POSITION IS CHANGED OBJECT MOVES
return false;
}
@Override
public boolean pinch(Vector2 arg0, Vector2 arg1, Vector2 arg2,
Vector2 arg3) {
// TODO Auto-generated method stub
return false;
}
};
public GestureDetector detector=new GestureDetector(listner)
{
public boolean touchUp(int arg0, int arg1, int arg2, int arg3)
{
gameScreen.isPlayerDraged=false;
return false;
}
};
public GameTouchProcessor(GameScreen gameScreen)
{
this.gameScreen=gameScreen;
}
}
в игре SCREEN (или любой другой экран и хотите, чтобы перетащить) PUT ЭТО
inputMultiplexer=new InputMultiplexer();
inputMultiplexer.addProcessor(game);
inputMultiplexer.addProcessor(new GameTouchProcessor(this).detector);
Gdx.input.setInputProcessor(inputMultiplexer);
Dont запутаться с отрывками моего кода
в gamescreen я Я рисую свой объект на постулировании вектора2, и я модифицирую вектор2 в методе PAN
для лучшей информации о входном процессоре
фактически все вход в Libgdx выполняется на отдельном потоке и входной процессор присваивается ему. Но когда вы хотите сделать свой собственный процесер, как в вашем случае, вам нужен обратный вызов панорамирования для перетаскивания объекта.
Так что если вы добавите свой proccesor, чем прокси-сервер по умолчанию Gdx, не будет работать, и вы не получите много важных входных вызовов, поэтому вам придется обрабатывать их явно.
Таким образом, чтобы избежать этого, мы создаем мультиплексор и добавьте как входную proceesor и ваш обычай его, чтобы он работает со всем вызовом поддерживает
здесь моя игра класс реализует inputproceesor (по умолчанию один). я объединил процессор ввода по умолчанию с моим настраиваемым
- 1. LibGDX - Поворот SpriteBatch на себя
- 2. Перетаскивание изображения (libGDX)
- 3. LibGDX Ошибка рендеринга SpriteBatch
- 4. Libgdx save SpriteBatch в текстуре
- 5. libgdx spritebatch not rendering textures
- 6. Libgdx - SpriteBatch alpha не работает
- 7. LIBGDX: SpriteBatch рисовать не опираясь на прошивке
- 8. LibGDX, как отключить setColour на SpriteBatch?
- 9. Spritebatch ничего не рисует LibGDX
- 10. libgdx перетаскивание
- 11. LibGDX draw BitmapFont в промежуточное местоположение (spritebatch)
- 12. libGDX Добавить собственный метод в SpriteBatch
- 13. Перетаскивание в libgdx мерцает
- 14. Перетаскивание спрайтов в libGDX
- 15. Libgdx спрайт положение относительно положения SpriteBatch в
- 16. SpriteBatch установлен ниже уровня Актера в libgdx
- 17. Перетаскивание Libgdx без цели
- 18. Буферы LibGDX Stencil при использовании SpriteBatch
- 19. LibGDX SpriteBatch Возможно использование нескольких меток?
- 20. Производительность Bad SpriteBatch при рендеринге tilemap [LibGDX]
- 21. Почему SpriteBatch ничего не рисует (LibGdx)?
- 22. libgdx: SpriteBatch не отображается с PerspectiveCamera
- 23. Почему LibGDX SpriteBatch использует треугольники вместо квадов?
- 24. LibGDX spritebatch размер по размеру экрана
- 25. LibGDX перетаскивание текстуры
- 26. Перетаскивание круга вокруг libGDX
- 27. Libgdx SpriteBatch.SetProjectionMatrix делает spritebatch не рисовать
- 28. libgdx - ui SpriteBatch необходимо масштабировать на основе размера окна?
- 29. libgdx перетаскивание и размещение актеров
- 30. SpriteBatch рисовать все
вы можете поделиться дополнительной информацией о том, как вы перетаскиваете свой объект –
Мне нужно перетащить объект, в который он коснулся. Объект находится через метод SpriteBatch.draw. У меня есть поиск по многим причинам, но они не полезны. Можете ли вы предоставить простой объект области текстуры, перетаскивающий код src, который уже запущен через spritebatch ???? – MGDroid
Я никогда не вращаюсь через текстуру regioni, чтобы преобразовать его в sprite, а затем повернуть его. Отправка кода в ответ через некоторое время –