所以我有一个项目的截止日期,我遇到了矩形碰撞的问题,并将图像的速度移动到了矢量点。矩形碰撞的问题是我有一个有一个hitbox的小图像,我有它,所以你可以用你的鼠标绘制一个选择框,但只有当选择框具有正高和宽时,两者才会发生碰撞。我会发布下面的代码,至于速度问题,我不知道如何让一些东西以恒定的速度移动到某一点,并在到达时停止。矩形/速度问题
我该如何做速度的事情,并翻转矩形,所以它不是负面的?
private static int prevMouseX = World.input.getMouseX();
private static int prevMouseY = World.input.getMouseY();
public static Rectangle selectBox = new Rectangle(0, 0, 0, 0);
public static void handleAI(GameContainer gc, Graphics g)
{
if (World.input.isMouseButtonDown(0))
{
g.setColor(new Color(0, 0, 0));
selectBox.setBounds(prevMouseX, prevMouseY, World.input.getMouseX() - prevMouseX, World.input.getMouseY() - prevMouseY);
g.draw(selectBox);
}
else
{
prevMouseX = World.input.getMouseX();
prevMouseY = World.input.getMouseY();
selectBox = new Rectangle(0, 0, 0, 0);
}
if (MouseAI.selectBox.intersects(unit.getHitbox()))
{
unit.setSelected(true);
}
if (unit.isSelected())
{
if (World.input.isMousePressed(1))
{
point.set(World.input.getMouseX() - unit.getPosition().x, World.input.getMouseY() - unit.getPosition().y);
pointSet = true;
}
}
if(pointSet)
{
float moveSpeedX = point.x * unit.getSpeed();
float moveSpeedY = point.y * unit.getSpeed();
unit.getPosition().x += moveSpeedX;
unit.getPosition().y += moveSpeedY;
}
}
1)为了更好地帮助越早,张贴[SSCCE](http://sscce.org/)。 2)你描述了一个问题,但至今没有问过问题(更不用说具体的可回答的问题)。你的问题是什么? – 2013-05-10 19:45:12
问题似乎是选择框不与单位的hitbox相交,因此它不算作选择。发生这种情况是因为选择框具有负宽度和/或高度。所以我需要一种方法来选择单位,无论选择框的宽度和高度如何,只要它相交。速度问题是,当我选择单位并右键点击将他送到某个位置时,我希望他以恒定的速度移动。我点击的地方有一个向量点,但是如何让它以恒定的速度移动。 – ExoNaut 2013-05-10 19:48:33
嗨;我试图修复缩进,但我不确定我是否正确。第二和第三条if语句应该在handleAI()中吗? – 2013-05-10 19:48:40