Java 移动精灵到鼠标点击[Libgdx];

Java 移动精灵到鼠标点击[Libgdx];,java,libgdx,Java,Libgdx,我是libgdx游戏编程新手,我想创建一个RPG类型的游戏 我想让玩家移动到鼠标/触摸位置 我已经计算出了一种合乎逻辑的方法来实现这一点,但似乎玩家一次只移动一帧,这意味着玩家需要点击几次才能到达正确的位置,而不是一次点击一帧一帧地走到点击位置 我的代码: Gdx.input.setInputProcessor(新输入(){ 公共布尔接地(整数屏幕X、整数屏幕Y、整数指针、整数按钮){ 投影=新矢量3(screenX,screenY,0); 凸轮未投影(投影); if(projected.x!=

我是libgdx游戏编程新手,我想创建一个RPG类型的游戏

我想让玩家移动到鼠标/触摸位置

我已经计算出了一种合乎逻辑的方法来实现这一点,但似乎玩家一次只移动一帧,这意味着玩家需要点击几次才能到达正确的位置,而不是一次点击一帧一帧地走到点击位置

我的代码:

Gdx.input.setInputProcessor(新输入(){
公共布尔接地(整数屏幕X、整数屏幕Y、整数指针、整数按钮){
投影=新矢量3(screenX,screenY,0);
凸轮未投影(投影);
if(projected.x!=position.x | | projected.y!=position.y){
浮动路径x=投影.x-位置.x;
float=projected.y-位置.y;
浮点距离=(float)Math.sqrt(pathX*pathX+pathY*pathY);
浮动方向X=路径X/距离;
浮动方向Y=Y/距离;
位置x+=方向x*速度;
位置y+=方向y*速度;
}
返回true;
}
每次触摸屏幕时,您的方法都会被调用(一次)。您的方法会使用

所以每次触摸屏幕只会移动你的精灵一次

你的
Screen
类有一个方法。这个方法会被反复调用,参数给出自上次调用以来的时间。这使它成为一个有用的方法,可以重复执行需要执行的操作(例如更新精灵的位置)

因此,在
触地()中,您真正想要做的是设置精灵的方向(作为精灵对象中包含的字段)

update(float deltaTime) {
   position.x += directionX * Speed * deltaTime;
   position.y += directionY * Speed * deltaTime;
}
这几乎是您编写的,但是
*deltaTime
确保位置更改的量只是自上次调用此方法以来所覆盖的距离

但此方法仍然无法调用,因此需要从
屏幕调用它。render(deltaTime)
方法:

render(float deltaTime) {
   mySprite.update(deltaTime);
}
render(float deltaTime) {
   mySprite.update(deltaTime);
}