Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ограничение угла поворота оружия у героя (http://www.flasher.ru/forum/showthread.php?t=182911)

mihael_p 06.08.2012 21:06

Ограничение угла поворота оружия у героя
 
Вложений: 1
Уважаемые, столкнулся сегодня с такой проблемой: Есть герой, у него есть оружие, оружие "следит" за курсором, герой ходит вправо и влево. Задача такова: при движении влево, оружие может двигаться от 0 градусов до 90 градусов, при движении вправо - от 90 гр. до 180 гр. С движением влево - проблем нет, а вот при движении вправо - возникает одна, когда градус становится больше 180 (курсор опускается ниже ) оружие занимает положение в 90 градусов. Вот кусочек кода отвечающего за это:
Код AS3:

private function updateRotation(e:Event):void
{
  var a:Point = new Point(hero.x, hero.y);
  var b:Point = new Point(stage.mouseX, stage.mouseY);
 
  var rotateTo:Number = anglePoisk(a, b);
 
  hero.gun.rotation = rotateTo - 180;;
  if ( hero.gun.rotation< minAngle)
  {
    a hero.gun.rotation = minAngle;
  }else if ( hero.gun.rotation > maxAngle)
  {
    hero.gun.rotation = maxAngle;
  }
 
}
public function anglePoisk (a:Point, b:Point, rodian:Boolean = true):Number
{
  if(!rodian) return Math.atan2(b.y - a.y, b.x - a.x);
  return (180/Math.PI)*Math.atan2(b.y - a.y, b.x - a.x);
}

При нажатии стрелок на клавиатуре я меняю minAngle и maxAngle
влево:
Код AS3:

minAngle = 0;
maxAngle = 90;

вправо:
Код AS3:

minAngle = 90;
maxAngle = 180;

Где моя ошибка, подскажите пожалуйста? Если кто то знает более лучшее решение этой проблемы - буду благодарен если поделитесь.


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

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