Правильная формула для инвертирования вращения (в градусах) в AS3?

Я в полной растерянности, как это сделать:

У меня есть муви-клип плеера на сцене, и когда щелкают мышью, пуля выстреливается и проецируется под правильным углом, чтобы указать на местоположение мыши. Я также хочу «зеркального» врага, который стреляет в противоположном направлении, когда это делает игрок.

Например, когда игрок стреляет вверх, противник должен сбить. Точно так же стрельба вправо заставит врага стрелять влево.

Есть ли формула для преобразования вращения в градусах в его полную противоположность?

Спасибо, - Райан


person PROWNE    schedule 20.06.2012    source источник


Ответы (3)


Использование Matrix — очень простое и точное решение. просто несколько a или c с -1 (для отражения по вертикали и горизонтали).

Образец кода:

        var _tmpMatrix:Matrix = sprite.transform.matrix;
        _tmpMatrix.a *= -1;
        if ( _tmpMatrix.a < 0 ) {
            _tmpMatrix.tx = sprite.width + sprite.x;
        } else {
            _tmpMatrix.tx = 0;
        }
        sprite.transform.matrix = _tmpMatrix;
person wanting252    schedule 20.06.2012

Не будет ли добавление или вычитание 180 градусов указывать в противоположном направлении?

person Barış Uşaklı    schedule 20.06.2012
comment
Сначала я пытался это сделать, но казалось, что вращение меняется в зависимости от того, где находится враг (что я парировал), но безрезультатно. - person PROWNE; 20.06.2012
comment
Убедитесь, что вы используете правильные значения при выполнении расчетов, некоторые функции в AS3 требуют углов в радианах, а не в градусах, вам может потребоваться преобразовать градусы в радианы и т. д. - person Barış Uşaklı; 20.06.2012

or

obj.масштабX = -1;

будет делать то же самое. знак равно

person holly    schedule 25.08.2014
comment
Не очень понятно, что вы говорите. В конце концов, отрицательное масштабирование объекта будет иметь множество нежелательных эффектов. Перевернуть вращение тоже не получится. Можете ли вы добавить детали? - person Epirocks; 29.05.2020