我想在触摸时平滑地移动两个物体 .
这是我的代码:
for(int i = 0; i <96; i++){
Asstest.rect_pipe_down.y--);
}
这应该将矩形向下移动96个像素(SMOOTH)
但它只是关闭而没有平滑......
我错了什么?
如果你触摸,管道应该关闭,但不是硬,平滑,如果它们关闭 . 但是通过以下代码,他们只是努力关闭......
这是完整的代码:
if(Gdx.input.isTouched()){
Assets.rect_pipe_down.y = 512 - 320/2;
Assets.rect_pipe_up.y = -320 + 320/2;
for (int i = 0; i < 96; i++){
smoothTime = TimeUtils.millis();
if(TimeUtils.millis() - smoothTime > 10) {
Assets.rect_pipe_down.y--;
Assets.rect_pipe_up.y++;
batch.begin();
batch.draw(Assets.region_pipe_down, Assets.rect_pipe_down.x, Assets.rect_pipe_down.y);
batch.draw(Assets.region_pipe_up, Assets.rect_pipe_up.x, Assets.rect_pipe_up.y);
batch.end();
}
}
closed = true;
}
1 回答
您无法在一次
render()
调用中多次渲染,一次调用只能绘制一帧 . 在您当前的代码中,后面的图像只是覆盖以前的图像 .你可以做的是有一个变量,它存储在帧之间,它存储管道当前是否正在关闭,速度的常量和一些条件告诉它们何时可以停止 - 也许当它们彼此相距一定距离时,不是确定你想要什么 . 无论如何,这就是我在我的例子中使用的内容 .
然后在
render()
方法中,在绘制任何内容之前,您可以这样做:这里,
closing
是您希望它们开始关闭时设置为true
的变量,其他变量是常量 . 如果要确保它们最终处于与帧速率无关的特定高度,则可以添加更多变量/常量 .