2012-12-21 2 views
1

Я трансформирую бочку башни с AffineTransform, и я хочу, чтобы пуля стреляла прямо из кончика ствола. Есть ли метод в форме, чтобы получить эти координаты или я должен вычислить его вручную?Получение точки x и y преобразованного объекта

код для преобразования

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))); 
+1

Вы можете посмотреть на [этот пример] (http://stackoverflow.com/questions/12964983/rotate-image-around-character-java/12971987#12971987), в котором демонстрируются средства, с помощью которых вы можете вычислить точка, удаленная от центра, заданная определенным углом – MadProgrammer

ответ

2

Используйте тот же преобразование (rotate) для преобразования координат кончика ствола:

rotate.transform(tipOfTheBarrel, transformedTipOfTheBarrel); 
0

Когда ваш ствол - это повернутый прямоугольник, тогда вы не можете его использовать, потому что ваша пуля uld, вероятно, выходит из середины стороны прямоугольника, а не из одного из углов.

Но если вы создадите свою собственную фигуру и убедитесь, что точка, где появляются пули, является первой в форме, то вы можете использовать getPathIterator(), чтобы получить преобразованную точку.

Смежные вопросы