2015-10-16 4 views
1

Привет всем, поэтому у меня проблемы с этим. Таким образом, у меня есть массив Barrel Добавленные к сцене видеоклипы и видеоклип под названием Круг, который при контакте с любым из стволов в массиве начинает вращаться ствол, который он в настоящее время начинает вращаться. Он вращается на своей точке регистрации, которая центрирована. Так что в моем ENTER_FRAME событие, где у меня есть установка все для ствола, чтобы повернуть и ударить тест и т.д ...Как стрелять по углам с вращающимся клипом?

Это как круг добавляется к бочкам:

  if (!circleFired) 
      { 
       circle.x = globalFirePoint.x; 
       circle.y = globalFirePoint.y; 
       currentCannon.addChildAt(circle, 0); 
      } 

Теперь я пытаюсь для достижения - когда пользователь нажимает на экран круг. Клип снимается с Бочка. Прямо сейчас у меня есть стрельба из ствола в угол, который он должен стрелять, но вместо того, чтобы идти по прямой линии от угла, на котором он стреляет, он стреляет и начинает очень быстро поворачиваться в положении по часовой стрелке, когда вращающийся цилиндр вращается.

Вот код, я что-то работает, кроме того одна проблема:

 var dX:Number = globalFirePoint.x; 
     var dY:Number = globalFirePoint.y; 
     var angle:Number = Math.atan2(dY, dX); 

     if (circleFired) 
     { 
      circle.x += Math.sin(deg2rad(angle -90)) * velocity; 
      circle.y += Math.cos(deg2rad(angle - 90)) * velocity; 
     } 

так globalFirePoint является следующее:

globalFirePoint = localToGlobal(new Point(currentCannon.mcFirePoint.x, currentCannon.mcFirePoint.y)); 

Его отправной точкой я хочу круг, чтобы стрелять из.

Вот deg2rad Функция:

private function deg2rad(num:Number):Number 
    { 
     var radians:Number = num * (Math.PI/180); 
     return radians; 
    } 

Я знаю, что мне нужно от греха и соз для вычисления угла правильного? Является ли математика неправильной? Почему круг изгибается, когда круг стреляет из globalFirePoint? Что я могу сделать, чтобы сделать это по прямой?

Любая помощь будет принята за благодарность!

+0

Это определенно только после поворота пути стволов. Я не знаю, как он оборвал его путь и просто продолжал прямую линию. – Nathan

ответ

1

globalFirePoint изменение на каждом ENTER_FRAME мероприятие? Если это так, то и расчетный угол также изменится, что приведет к кривой, которую вы испытываете.

Один из способов исправить это только вычислить globalFirePoint, когда пользователь нажимает на экран. Затем на каждом событии ENTER_FRAME вместо пересчета globalFirePoint используйте уже рассчитанный globalFirePoint, который не изменится, если пользователь не нажмет экран, когда круг находится в бочке.

Вы должны вычислять угол только тогда, когда пользователь нажимает на экран. Нет необходимости вычислять его при каждом событии ENTER_FRAME, так как единственный раз, когда вас интересует угол, когда круг снимается с бочки.

+0

Я удалил все переменные из прослушивателя ENTER_FRAME и добавил их к событию мыши, когда пользователь нажимает на экран, но все еще изогнут. Я предполагаю, что он изгибается, потому что он идет по пути globalFirePoints, когда он вращается по правилу? У меня есть globalFirePoint, добавленный в конце ствола. Итак, изобразите Бочку, вращающуюся в идеальном круге, и мяч стреляет из конца ствола, который является globalFirePoint. – Nathan

+0

Может быть, моя математика ошибочна? Я обновил вопрос с помощью дополнительных уравнений, которые я случайно потерял, если вы можете проверить это. – Nathan

+0

@Nathan Не добавляйте круг в качестве ребенка в бочку. Причина, по которой кружок изгибается, состоит в том, что он является ребенком из ствола, а клип бочонка вращается. –