我试图让一个矩形从固定位置移动到我游戏中的点击点。我让它工作到我从鼠标监听器类中的e.getX和e.getY方法获得良好的坐标。我也有通过增加和减少positionX和Y值的矩形直线向上或向上和向下移动,但我需要一种方法将它移动到我点击的任何点,基本上我需要设置x的变化和y。我想的方法是从点击点和起点计算线的上升和运行,然后将x和y值设置为上升和运行。如果我这样做,我需要一种方法来减少上升并将值运行到最低值,以便它可以流畅地移动。或者,如果有一种方式我没有想到你可以提供任何有用的指导。
答案 0 :(得分:5)
你现在如何画画?下面是我用来在一个小游戏中射击子弹的方法,我做了/真的应该在某个时候完成。
这绝不是你需要的所有代码,并且在某些地方有更好的方法来做事情(我相信人们会在:)之后的评论部分开始告诉我)但它应该给你是工作的基础。
这件事中缺少的一件事是调整它重新绘制的速度(fps),对不起但是我不记得现在这样做的简单方法(需要回到我的实际工作!)希望它有所帮助
它的准系统将是这样的:
//these set out the current position of your rectangle
double recX, reYy, recH, recW;
//this gives something to manage speed
int speed;
public void paintComponent(Graphics g) {
g.drawRectangle(recX,rexY,recH,recW);
}
//here we work out the movement
public void clickedScreen(double x, double y){
double newX = x;
double newY = y;
//calculate the speed to move at
vX = newX - recX;
vY = newY - recY;
//get the distance
length = Math.sqrt((v1*v1)+(v2*v2));
//make it a unit vector
v1 = v1/length;
v2 = v2/length;
}
public moveRec(){
recX = recX+(v1*speed);
recY = recY+(v2*speed);
}
while(true) {
moveRec();
repaint();
}