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