Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Libgdx精灵穿越屏幕边缘_Java_Libgdx - Fatal编程技术网

Java Libgdx精灵穿越屏幕边缘

Java Libgdx精灵穿越屏幕边缘,java,libgdx,Java,Libgdx,我想在精灵退出屏幕时实现平滑过渡。这意味着,如果我的精灵从左边缘退出屏幕,它应该出现在右边缘。我遇到的主要问题是,我不想简单地设置精灵从一条边到另一条边的新坐标。例如,如果精灵一半穿过左边缘,另一半应该出现在右边缘(平滑过渡)。有人能为这个问题提供一些建议吗?伪代码 if(sprite.pos.x > screen.width) { sprite.pos.x -= screen.width; } else if(sprite.pos.x < 0 - sprite.width)

我想在精灵退出屏幕时实现平滑过渡。这意味着,如果我的精灵从左边缘退出屏幕,它应该出现在右边缘。我遇到的主要问题是,我不想简单地设置精灵从一条边到另一条边的新坐标。例如,如果精灵一半穿过左边缘,另一半应该出现在右边缘(平滑过渡)。有人能为这个问题提供一些建议吗?

伪代码

if(sprite.pos.x > screen.width)
{
    sprite.pos.x -= screen.width;
}
else if(sprite.pos.x < 0 - sprite.width)
{
    sprite.pos.x += screen.width;
}

if(sprite.pos.x + sprite.width > screen.width && sprite.pos.x < screen.width)
{
    batch.draw(sprite.texture, sprite.pos.x - screen.width, sprite.pos.y);
} 
else if(sprite.pos.x < 0 && sprite.pos.x + sprite.width > 0)
{
    batch.draw(sprite.texture, sprite.pos.x + screen.width, sprite.pos.y);
}

batch.draw(sprite.texture, sprite.pos.x, sprite.pos.y);
if(sprite.pos.x>屏幕宽度)
{
sprite.pos.x-=屏幕宽度;
}
否则如果(精灵位置x<0-精灵宽度)
{
sprite.pos.x+=屏幕宽度;
}
if(sprite.pos.x+sprite.width>screen.width&&sprite.pos.x0)
{
批处理绘制(sprite.texture,sprite.pos.x+screen.width,sprite.pos.y);
}
批量绘制(sprite.texture,sprite.pos.x,sprite.pos.y);

您是否使用SpriteBatch绘制精灵?如果是的话,你可以简单地画两次你的精灵——一次向左,一次向右。