尝试将对象从固定的起点移动到鼠标单击的坐标

时间:2011-12-09 00:52:15

标签: java swing

我试图让一个矩形从固定位置移动到我游戏中的点击点。我让它工作到我从鼠标监听器类中的e.getX和e.getY方法获得良好的坐标。我也有通过增加和减少positionX和Y值的矩形直线向上或向上和向下移动,但我需要一种方法将它移动到我点击的任何点,基本上我需要设置x的变化和y。我想的方法是从点击点和起点计算线的上升和运行,然后将x和y值设置为上升和运行。如果我这样做,我需要一种方法来减少上升并将值运行到最低值,以便它可以流畅地移动。或者,如果有一种方式我没有想到你可以提供任何有用的指导。

1 个答案:

答案 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();
}