Как отследить точку при вращении MovieClip?

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

Можно ли как-то легко отследить эту точку, чтобы я мог динамически создавать новые объекты в том же месте.

Я попытался добавить нового МС в качестве ребенка к моему персонажу, с начальной позицией на наконечнике оружия. В некоторых системах дочерние объекты "следуют" за своими родителями, но здесь это не сработало.

Есть ли какой-либо другой «родной» способ сделать это, или мне просто нужно иметь представление полярных координат точки относительно начала координат персонажа-MovieClips и добавить вращение MC к тета, чтобы я мог вычислить X и Координаты Y?


person varesa    schedule 14.02.2012    source источник
comment
простая математика en.wikipedia.org/wiki/Circle   -  person The_asMan    schedule 15.02.2012


Ответы (2)


Попробуйте localToGlobal() и globalToLocal () для преобразования координат мувиклипа вашего персонажа в его родителя.

person sch    schedule 14.02.2012
comment
Похоже, что-то, что я искал ... Я попробую завтра - person varesa; 15.02.2012

Установите видеоклип с пистолетом (я предполагаю, что он находится на конце руки?) так, чтобы наконечник пистолета находился прямо напротив точки поворота.

Затем передайте методу, который запускает три параметра пули: координаты x и y пушки MC и ее текущий угол.

Код для начальной позиции ваших пуль может выглядеть примерно так:

public function CreateBullet(x,y:Number, degree:Number)
{
    // set start position
    this.x = x + ARMLENGTH*Math.cos((degree/180)*Math.PI);
    this.y = y + ARMLENGTH*Math.sin((degree/180)*Math.PI);
}

Где ARMLENGTH — это расстояние от точки поворота до конца пистолета.

Два предостережения: Flash может делать странные вещи с углами, поэтому вам, возможно, придется сделать оператор if в CreateBullet() с перевернутыми градусами, если игрок смотрит назад. Кроме того, если у вас есть пистолет MC в качестве дочернего элемента вашего персонажа, вам, возможно, придется создать точку, где находится точка поворота, а затем выполнить для нее localToGlobal. Для этого есть хорошая ссылка здесь.

person n_i_c_k    schedule 14.02.2012
comment
Предполагая, что пистолет находится сбоку, совмещение шарнира со стволом затруднит вращение игрока. Я думал об этом, но я думаю, что поворачиваться/прицеливаться будет некрасиво - person varesa; 15.02.2012