libgdx - Libgdx:GestureListener - 平移无法正常工作
问题描述
我是 libgdx 的新手,并试图通过拖动它来移动一个圆圈。但它不能正常工作。
类减速如下——
public class gScreen1 extends ScreenAdapter
implements GestureDetector.GestureListener {
private static final float WORLD_WIDTH = 640;
private static final float WORLD_HEIGHT = 480;
...
@Override
public void show() {
super.show();
camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.position.set(WORLD_WIDTH / 2, WORLD_HEIGHT / 2, 0);
camera.update();
viewport = new FitViewport(WORLD_WIDTH, WORLD_HEIGHT, camera);
shapeRenderer = new ShapeRenderer();
batch = new SpriteBatch();
}
private void drawGrid() {
Gdx.gl.glLineWidth(2);
shapeRenderer.setProjectionMatrix(camera.projection);
shapeRenderer.setTransformMatrix(camera.view);
shapeRenderer.setColor(Color.YELLOW);
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
size = points.length;
for (int i = 0; i < size; i++) {
shapeRenderer.circle(pointsr[i].x , pointsr[i].y ,10);
}
shapeRenderer.end();
}
@Override
public void render(float delta) {
super.render(delta);
clearScreen();
drawGrid();
}
@Override
public boolean pan(float x1, float y1, float deltaX, float deltaY) {
Vector3 tmpCoords = new Vector3(x1,y1, 0);
camera.unproject(tmpCoords);
int x = (int)tmpCoords.x;
int y = (int)tmpCoords.y;
for( i = 0; i < size ; i++) {
int x2 = pointsr[i].x;
int y2 = pointsr[i].y;
if( ((x2 -x)*(x2 -x) + (y2 -y)*(y2 -y) ) < 400 )
break;
}
if( i < size ) {
pointsr[i].x += deltaX;
pointsr[i].y += deltaY;
}
}
圆圈没有跟随手指的移动,有时它们会移动一点,但与触摸移动的 y 方向相反。
解决方案
推荐阅读
- javascript - React hooks 函数依赖
- sql - 如何向我的 Hive 表添加分区?
- react-native - 对 firebase 数据库字段的多个查询
- c# - C# Asp Core 2.2 模型绑定对象在 OnGet() 中实例化,但不在 OnPost() 中
- facebook - 如何在 React Native 中启动 ViewContent facebook 事件?
- azure-devops - 来自私有源的 Azure 站点扩展
- dask - 异步 Xarray 写入 Zarr
- c# - 是否有开箱即用的方式将 HTTP 请求的整个主体绑定到 ASP.NET Core 控制器操作中的字符串参数?
- python - 写入 XML 文件需要大数组作为内存中的字符串
- scala - Scala - 创建类型集合的惯用方式