我正在使用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));
bulllet的代码
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)));
答案 0 :(得分:2)
使用相同的变换(rotate
)来变换圆筒尖端的坐标:
rotate.transform(tipOfTheBarrel, transformedTipOfTheBarrel);
答案 1 :(得分:0)
如果你的镜筒是一个旋转的矩形,那你就不能使用它,因为你的子弹可能应该从矩形边的中间出来而不是一个角。
但是如果你创建自己的形状并且确保子弹出现的点是形状中的第一个,那么你可以使用getPathIterator()
来获得变换点。