![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2011
Сообщений: 27
|
всем привет. нашел исходник вращения пушки (слежение за курсором) вокруг своей оси и решил его переделать на повороты на 90 градусов (пушка смотрит прямо, от центра поворачивается направа на 90 и не поворачивается дальше и так же налево), пробовал менять значения - но у меня все не выходит..
private function updateRotation():void { // РАСЧЕТ ВРАЩЕНИЯ ПУШКИ dx = player.x - stage.mouseX; dy = player.y - stage.mouseY; // В КАКУЮ СТОРОНУ ПОВОРАЧИВАТЬ var rotateTo:Number = getDegrees(getRadians(dx, dy)); // ПОВОРАЧИВАТЬ ОТ 0 ДО 360 ГРАД if (rotateTo > player.rotation + 180) rotateTo -= 360; if (rotateTo < player.rotation - 180) rotateTo += 360; // ЛЕГКОСТЬ ВРАЩЕНИЯ trueRotation = (rotateTo - player.rotation) /rotateSpeedMax; player.rotation += trueRotation; } public function getRadians(delta_x:Number, delta_y:Number):Number { var r:Number = Math.atan2(delta_y, delta_x); if (delta_y < 0) { r += (2*Math.PI); } return r; } public function getDegrees(radians:Number):Number { return Math.floor(radians/(Math.PI/180)); } Последний раз редактировалось alexcon314; 14.05.2012 в 13:05. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 319
|
stage.addEventListener(Event.ENTER_FRAME, updateRotation); var rotate:Number = player.rotation; function updateRotation(event:Event):void { var dx:Number = player.x - stage.mouseX; var dy:Number = player.y - stage.mouseY; var rotateTo:Number = Math.atan2(dy,dx) * 180 / Math.PI; if (rotateTo > rotate + 180) rotateTo -= 360; if (rotateTo < rotate - 180) rotateTo += 360; rotate += (rotateTo - rotate) / rotateSpeedMax; player.rotation = Math.round(rotate / 90) * 90; } Последний раз редактировалось Nooob; 13.05.2012 в 19:42. |
|
|||||
|
Регистрация: Sep 2011
Сообщений: 27
|
спасибо, конечно за помощь...но мне надо исправить именно в этом коде...(слишком много завязанных друг на друге функций)
P.S. я наверно не так выразился.. вот стоит пушка. к примеру - в центре stage"а. и смотрит прямо (на 12 часов), по перемещению мышки в разные стороны - пушка "следит" за мышкой и поворачивается в её сторону, но если мышька уходит "за" пушку - тоесть координаты у выше чем у самой пушки, то пушка поворачивается и останавливается на 90 градусах (то есть на 3 часа) (как буд-то ей что-то мешает..не знаю как сказать =) )... и то же самое с поворотом на 9 часов. плавный переход (по энтер фрейму) и остановка, в случае если мышка зайдет ниже пушки Последний раз редактировалось MAGISTRS; 13.05.2012 в 23:06. |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|