Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.05.2012, 18:57
MAGISTRS вне форума Посмотреть профиль Отправить личное сообщение для MAGISTRS Найти все сообщения от MAGISTRS
  № 1  
Ответить с цитированием
MAGISTRS

Регистрация: Sep 2011
Сообщений: 27
The bomb! проблемы с разворотом

всем привет. нашел исходник вращения пушки (слежение за курсором) вокруг своей оси и решил его переделать на повороты на 90 градусов (пушка смотрит прямо, от центра поворачивается направа на 90 и не поворачивается дальше и так же налево), пробовал менять значения - но у меня все не выходит..
Код AS3:
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));
       }
пробовал и rotateTo менять, и r - но получается какая-то ересь..


Последний раз редактировалось alexcon314; 14.05.2012 в 13:05.
Старый 13.05.2012, 19:29
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 2  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Код AS3:
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.
Старый 13.05.2012, 19:50
MAGISTRS вне форума Посмотреть профиль Отправить личное сообщение для MAGISTRS Найти все сообщения от MAGISTRS
  № 3  
Ответить с цитированием
MAGISTRS

Регистрация: Sep 2011
Сообщений: 27
спасибо, конечно за помощь...но мне надо исправить именно в этом коде...(слишком много завязанных друг на друге функций)
P.S. я наверно не так выразился.. вот стоит пушка. к примеру - в центре stage"а. и смотрит прямо (на 12 часов), по перемещению мышки в разные стороны - пушка "следит" за мышкой и поворачивается в её сторону, но если мышька уходит "за" пушку - тоесть координаты у выше чем у самой пушки, то пушка поворачивается и останавливается на 90 градусах (то есть на 3 часа) (как буд-то ей что-то мешает..не знаю как сказать =) )... и то же самое с поворотом на 9 часов. плавный переход (по энтер фрейму) и остановка, в случае если мышка зайдет ниже пушки


Последний раз редактировалось MAGISTRS; 13.05.2012 в 23:06.
Создать новую тему Ответ Часовой пояс GMT +4, время: 15:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.