0
我正在研究我的2D Java遊戲,並且碰撞邊界的旋轉有問題。旋轉的碰撞邊界
我有一個攻擊類:
public void render(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
AffineTransform old = g2d.getTransform();
g2d.rotate(Math.toRadians(player.getDir()), (double) player.getX() + 16, (double) player.getY() + 16);
g2d.setComposite(makeTransparent(alpha));
g.setColor(Color.gray);
g.fillRect((int) x, (int) y, 32, 32);
g2d.setComposite(makeTransparent(1));
g.setColor(Color.red); // drawing the results
g2d.draw(getBounds()); // drawing the getBounds();
g2d.setTransform(old);
}
private AlphaComposite makeTransparent(float alpha) {
int type = AlphaComposite.SRC_OVER;
return (AlphaComposite.getInstance(type, alpha));
}
public Rectangle getBounds() {
return new Rectangle((int) x, (int) y, (int) width + 32, (int) height + 32);
}
但實際上它只是「造成傷害」的字符的右側 - 般不會發生旋轉。我試圖使用: https://stackoverflow.com/a/5925715/5502471 解決方案,但我有點失敗,不知道我做錯了什麼。
一些提示:
攻擊是一個獨立的類,
攻擊從Player類通過鍵盤輸入引起的,
碰撞發生在敵對階級,
if (tempObject.getId() == ID.Attack){ if (getBounds().intersects(tempObject.getBounds())){ health-=3; } }
我一直在尋找一些「簡單」的方法來做到這一點,因爲我希望在許多事情中使用它);如果沒有簡單的方法,那麼困難的方式也會做 - 挑戰接受!