![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Aug 2012
Адрес: Санкт-Петербург
Сообщений: 12
|
Помогите с кодом, пожалуйста!
В общем, ситуация такая: На главной сцене мувик (танк). Внутри него еще один мувик (башня танка). Делал так чтобы танк ездил и поворачивался сам +вращение башни вслед за мышкой. Вроде все сделал танк ездит, башня крутится. Если танк стоит или перемещается в перед назад, то башня ведет себя как надо, смотрит ровно туда куда и курсор мыши, но стоит только начать поворот самого танка как башня начинает вращаться в обратную сторону! Да и просто при повороте танка на угол идет смещение поворота башни относительно курсора! Помогите решить проблему! Я себе уже весь моСк взорвал!!! исходники во вложенном файле.танки.rar Собственно сам код: // var step = 2; var rotDirSpeed = 3; onEnterFrame = function () { if (Key.isDown(Key.LEFT)) { hero_mc._rotation -= rotDirSpeed; } else if (Key.isDown(Key.RIGHT)) { hero_mc._rotation += rotDirSpeed; } var mDx = _xmouse - hero_mc._x; var mDy = _ymouse - hero_mc._y; var mAngle = Math.atan2(mDy, mDx); hero_mc.body_mc._rotation = -hero_mc._rotation + mAngle / Math.PI * -180; //поворачиваем башню за мышкой var dirAngle = hero_mc._rotation / 180 * Math.PI; if (Key.isDown(Key.UP)) { hero_mc.foot_mc.play(); hero_mc._x -= step * Math.cos(dirAngle); hero_mc._y -= step * Math.sin(dirAngle); } else if (Key.isDown(Key.DOWN)) { hero_mc.foot_mc.play() hero_mc._x += step * Math.cos(dirAngle); hero_mc._y += step * Math.sin(dirAngle); } else { hero_mc.foot_mc.stop(); } }; onMouseDown = function () { hero_mc.body_mc.play(); //стреляем по клику }; Последний раз редактировалось Orfei; 09.10.2012 в 15:43. Причина: Требование модератора |
|
|||||
|
Orfei,
Типичная проблема. Это связанно с тем, что ваша башня находиться "внутри" танка. У клипа танка, внутри своя координатная система. Когда танк проворачивается, внутри него (где находиться башня) ничего не меняется. Вообщем, для расчёта угла поворота башни, координаты цели/мышки нужно переводить из глобальных в локальную координатную систему, где находиться башня. Для этого в AS2.0 уже есть готовые методы у муви клипов: globalToLocal localToGlobal Добавлено через 8 минут Если не осилите, вариант попроще есть. Вытащите башню из танка, чтоб она балы на одном уровне с танком. Затем цепляйте башню к танку: Минус в том, что башня сможет находиться только на центре танка.
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Регистрация: Aug 2012
Адрес: Санкт-Петербург
Сообщений: 12
|
я пока только в стадии освоения. так что надо время на попробовать. )))
вариант с методами globalToLocal; localToGlobal конечно интересней. Только правильно пихнуть его пока не получается. )) В принципе я свою ошибку понял. спасибо за подсказку. Буду пробовать исправлять. |
|
|||||
|
Регистрация: Aug 2012
Адрес: Санкт-Петербург
Сообщений: 12
|
Уфф!!!
После 5 часов мозгового штурма я все же добился того что требовалось. и так: Как и сказал уважаемый Tails, проблема оказалась действительно в координатах. Но в неожиданном месте! В процессе создания мвиков: тельце танчика, башня, выстрел. Я естественно их перемещал, поворачивал, отражал и т.д и т.п. Как оказалось внутри на уровне графики все компоненты перемещаются как хотят. Как то; допустим тяну картинку стрелкой в низ а она ползет вверх, тяну ее в право а она едет влево! Именно на уровне графики я развернул все картинки так чтобы при воспроизведеннии они смотрели в ту сторону куда мне надо. И УРЯ! Усе заработало.!!! Вот только смущает нюанс: выставив всю графику строго по стрелочкам: жмем в право -едет в право, жмем вверх -едет вверх. Это мне ровным счетом ничего не дало! Все равно была мешанина. Только после того как сверяясь с воспроизведением я выставил правильно. Итог: 1. Код сохранил таким как он и был изначально. 2. мувики на всех уровнях выставлены строго по стрелочкам. 3. на уровне графики бардак. лево-право, верх-низ перепутаны на проч! (в прочем при воспроизведении это не существенно. Танчик ездит согласно стрелкам, поварачивает в строну мышки, стреляет в сторону клика!) Отдельное спасибо таварищу Tails за подсказку в каком направлении искать! :-) |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|