Как отследить точку на вращающемся MovieClip? - PullRequest
0 голосов
/ 14 февраля 2012

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

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

1 голос
/ 15 февраля 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. Вот хорошая ссылка для этого здесь .

...