所以我有一個項目的截止日期,我遇到了矩形碰撞的問題,並將圖像的速度移動到了矢量點。矩形碰撞的問題是我有一個有一個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