Java/Processing—在节点之间以偶数线移动对象

Java/Processing—在节点之间以偶数线移动对象,java,processing,Java,Processing,我的标题可能没有多大意义,这就是为什么我在谷歌搜索我的问题时遇到了一些问题 我试图将屏幕上的形状从一组X/Y坐标直接移动到另一组X/Y坐标。 那么比如说, 这是用于设置新目标方向的类方法 void setTargetPosition(int-targetX,int-targetY){ xTar=targetX; yTar=targetY; 如果(xPos>xTar) xDir=-1; 其他的 xDir=1; 如果(yPos>yTar) yDir=-1; 其他的 xDir=1; } 这将设置X/

我的标题可能没有多大意义,这就是为什么我在谷歌搜索我的问题时遇到了一些问题

我试图将屏幕上的形状从一组X/Y坐标直接移动到另一组X/Y坐标。 那么比如说,

这是用于设置新目标方向的类方法

void setTargetPosition(int-targetX,int-targetY){
xTar=targetX;
yTar=targetY;
如果(xPos>xTar)
xDir=-1;
其他的
xDir=1;
如果(yPos>yTar)
yDir=-1;
其他的
xDir=1;
}
这将设置X/Y变量的方向,下面的代码将在屏幕上移动播放器

void drawPlayer(){
填充(圆形);
圈(XPO、YPO、35);
//一旦到达目标目的地,停止玩家移动
如果(xPos==xTar)
xDir=0;
if(yPos==yTar)
yDir=0;
xPos+=xDir;
yPos+=yDir;
}
上面的代码基本上按照预期工作,但我需要找到一种方法来按比例更改X/Y坐标,使其更像是到目的地的“直线”


对不起,如果这没有意义。我不知道应该使用什么术语。

计算移动时必须使用浮点值,而不是整数值:

float-xTar;
浮法钇;
浮动XPO;
浮动YPO;
setTargetPosition
只需设置
xTar
yTar

void setTargetPosition(浮点targetX,浮点targetY){
xTar=targetX;
yTar=targetY;
}
drawPlayer
中,必须计算从对象位置到目标的方向向量()

PVector dir=新的PVector(xTar-xPos,yTar-yPos);
如果向量()的长度大于0,则必须移动对象:

if(dir.mag()>0.0){
// [...]
}
如果必须移动对象,请按计算。注意,单位向量的长度是1。将矢量乘以一定的速度。这会将向量缩放到特定长度。确保向量的长度不大于到对象的距离(
min(speed,dir.mag())
)。最后,将向量的分量添加到对象的位置:

dir.normalize();
方向多(最小(速度,方向磁());
xPos+=dir.x;
yPos+=dir.y;
请参见示例:

职业玩家{
浮点xTar;
浮法钇;
浮动XPO;
浮动YPO;
颜色圈颜色=颜色(255,0,0);
游戏者(浮动x,浮动y)
{
xTar=xPos=x;
yTar=yPos=y;
}
无效设置目标位置(浮动目标X、浮动目标Y){
xTar=targetX;
yTar=targetY;
}
void drawPlayer(){
填充(圆形);
圈(XPO、YPO、35);
浮动速度=2.0;
PVector dir=新的PVector(xTar-xPos,yTar-yPos);
如果(dir.mag()>0.0){
dir.normalize();
方向多(最小(速度,方向磁());
xPos+=dir.x;
yPos+=dir.y;
}
}
}
玩家;
无效设置(){
大小(500500);
玩家=新玩家(宽度/2,高度/2);
}
作废提款(){
背景(255);
player.drawPlayer();
}
void mousePressed(){
player.setTargetPosition(mouseX,mouseY);
}
-也许这会有帮助?