1

我正在使用 AffineTransform 变换炮塔的枪管,我希望子弹从枪管尖端直接射出。是否有形状方法来获取这些坐标,还是我必须手动计算?

转换代码

AffineTransform rotate = AffineTransform.getRotateInstance(rotation, getX() + getWidth()/2, getY() + getHeight()/2);
barrel = rotate.createTransformedShape(new Rectangle(getX() + getWidth()/2, getY() - getHeight()/2, 2, getHeight()/2 + 1));

子弹代码

int dx = getX() - o.getX();
int dy = o.getY() - getY();
bullets.add(new Bullet((int)barrel.getBounds2D().getX(), (int)barrel.getBounds2D().getY(), SPEED, new NVector(dx, dy)));
4

2 回答 2

2

使用相同的变换 ( rotate) 来变换桶尖的坐标:

rotate.transform(tipOfTheBarrel, transformedTipOfTheBarrel);
于 2012-12-21T08:37:28.083 回答
0

当你的枪管是一个旋转的矩形时,你就不能使用它,因为你的子弹可能应该从矩形边的中间出来,而不是一个角。

但是,如果您创建自己的形状并确保项目符号出现的点是形状中的第一个点,那么您可以使用它getPathIterator()来获取转换后的点。

于 2012-12-21T09:06:20.607 回答