我有一个自上而下的2D游戏,你可以四处走动射击坏人。我希望能够向鼠标射击,不管它是什么方向,但我完全不知道如何做到这一点。
这是我的bullet
课程:
public class bullet {
public double x, y,dy,dx,mx,my;
public int dir;
public Rectangle r = new Rectangle((int) x, (int) y, 5, 5);
public bullet(double x, double y) {
this.x = x+10;
this.y = y+10;
this.mx = Comp.mx;
this.my = Comp.my;
r = new Rectangle((int) x, (int) y, 5, 5);
if (x < mx+play.camx) {
dx = 1;
}
if (x > mx+play.camx) {
dx = -1;
}
if (y < my+play.camy) {
dy = 1;
}
if (y > my+play.camy) {
dy = -1;
}
}
public void tick() {
x+=dx;
y+=dy;
r = new Rectangle((int) x - play.camx, (int) y - play.camy, 5, 5);
}
public void render(Graphics g) {
g.setColor(Color.black);
g.fillRect((int) x - play.camx, (int) y - play.camy, 5, 5);
}
}
答案 0 :(得分:2)
基本上,你需要计算起点和终点之间的天使,比如......
angle = -Math.toDegrees(Math.atan2(startX - endX, startY - endY)) + 180;
举个例子:
要跟踪鼠标,请使用MouseListener
和MouseMotionListerner
看看:
答案 1 :(得分:0)
尝试使用MouseInfo.getPointerInfo()。getPosition()(http://download.oracle.com/javase/1.5.0/docs/api/java/awt/PointerInfo.html#getLocation%28%29)它将返回一个点对象。 使用计时器,在每个计时器事件中,您将子弹移动到特定长度(您希望它移动)朝向上述方法提供的鼠标位置。 您可以这样做,例如减少x和y的差异 - 鼠标位置和子弹位置的变量。