我非常希望我的纹理在触摸时移动到屏幕上的随机位置,当它错过时我想要system.out("错过")。我无法弄清楚如何触及它。现在我只能触摸屏幕并且每次触摸记录大约10次触摸,因为它渲染速度非常快。
public void render(float delta) {
Gdx.gl.glClearColor(0,1,0,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
game.batch.setProjectionMatrix(camera.combined);
game.batch.begin();
if(Gdx.input.isTouched())
{
int randomX2 = (int)MathUtils.random(100,500);
int randomY2 = (int)MathUtils.random(100,500);
game.batch.draw(boxImage, randomX2, randomY2);
}
game.batch.end();
}
答案 0 :(得分:8)
如果randomX2
和randomY2
是纹理的坐标,则可以使用以下代码进行检查:
Rectangle bounds = new Rectangle(randomX2, randomY2, boxImage.getWidth(), boxImage.getHeight());
Vector3 tmp = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(tmp);
if (bounds.contains(tmp.x, tmp.y)) {
System.out.println("Is touched");
}
答案 1 :(得分:0)
我可以不用Vector3来解决这个问题。
var upArrowCircle = Circle(randomX, randomY, radius)
if(upArrowCircle.contains(Gdx.input.getX().toFloat(), Gdx.input.getY().toFloat()))
{
Gdx.app.log("upArrow", "contains")
}
对我来说,它运行完美。