Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 以动态速度逐块移动_Java_Lwjgl_Slick2d_Tile_Slick - Fatal编程技术网

Java 以动态速度逐块移动

Java 以动态速度逐块移动,java,lwjgl,slick2d,tile,slick,Java,Lwjgl,Slick2d,Tile,Slick,我将java与slick2d库一起使用,并尝试以动态速度逐块移动。我尝试过几种方法,但没有一种能够在瓷砖之间以动态速度移动。有人能帮我吗?举几个例子 编辑: 这两种方法我都试过了 带出三角洲 movementSpeed = 2; //decide direction if(targetX != x) { animation.update(delta); if(originalX < targetX)

我将java与slick2d库一起使用,并尝试以动态速度逐块移动。我尝试过几种方法,但没有一种能够在瓷砖之间以动态速度移动。有人能帮我吗?举几个例子

编辑:

这两种方法我都试过了

带出三角洲

        movementSpeed = 2;

    //decide direction
    if(targetX != x)
    {
        animation.update(delta);
        if(originalX < targetX)
            x += movementSpeed;
        else if(originalX > targetX)
            x -= movementSpeed;
    }
    if(targetY != y)
    {
        animation.update(delta);
        if(originalY < targetY)
            y += movementSpeed;
        else if(originalY > targetY)
            y -= movementSpeed;
    }
movementSpeed=2;
//决定方向
如果(targetX!=x)
{
动画更新(delta);
如果(原始值<目标值)
x+=移动速度;
else if(originalX>targetX)
x-=移动速度;
}
if(targetY!=y)
{
动画更新(delta);
如果(最初目标)
y-=移动速度;
}
勒普

公共静态浮动lerp(浮动启动、浮动停止、浮动t)
{
if(t<0)
返回启动;
返回启动+t*(停止-启动);
}
公共无效移动(长三角)
{
如果(procentMoved==0)
{
如果(getSpeed(targetX,targetY)!=0)
{
movementSpeed=getSpeed(targetX,targetY);
}否则
{
targetX=原始X;
targetY=最初;
}
}
if(procentMoved<1)
{
动画更新(delta);
//movementSpeed=getSpeed(targetX,targetY);
procentMoved+=移动速度;
}否则如果(procentMoved>1)
{
动画更新(delta);
//TODO修复弹跳错误
procentMoved=1;
}
+移动速度);
x=lerp(原始x、目标x、原移动);
y=lerp(原始、目标、原移动);
如果(x==targetX)
;
原始=x;
如果(y==targetY)
;
原始=y;
}

这似乎是你的问题。您的if语句只是结束,并没有真正发挥作用。此外,您还需要注意,变量也是混合的

if (x == targetX)
        ; // This will skip the If statement
    originalY = x;
    if (y == targetY)
        ; // This will skip the If statement
    originalY = y;

}
实际上你是在说

orginalY = x; // Y = X?
orginalY = y; // Y = Y

请不要把这件事放在心上。我仍然有这个问题,但我必须做一些更正和自动放置,以使其正常工作。

您尝试了什么?你面临什么问题?提供一些代码来说明您的问题…我尝试使用lerp,问题是如果速度不正确,字符移动到long en需要更正。我也尝试过不使用delta移动,但是如果移动速度不是32的倍数(瓷砖大小),它就会失去方向。
orginalY = x; // Y = X?
orginalY = y; // Y = Y