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

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

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

Регистрация: May 2010
Сообщений: 59
По умолчанию Математика ... или как двигаться к центру

Здравствуйте

есть код:

Код AS3:
var dx:Number = enemy.x - hero.X;
var dy:Number = enemy.y - hero.Y;
 
if (dx > 0) enemy.x -= 1;
else enemy.x += 1;
 
if (dy > 0) enemy.y -= 1;
else enemy.y += 1;
сначала на сцене располагается клип hero по центру
и клипы врагов enemy по бокам

задача врагов, двигаться к герою в центр

данный скрипт справляется отлично, но есть одно "но"
если враг находится по диагонали от героя, то двигается ровненько и красиво, а если где-то в другом месте, то он или сначала по Y или по X как бы неровненько подходит и потом уже двигается к герою...

как бы подкорректировать, что бы враги двигались именно к центру где бы они не находились, т.к. другими словами компенсировали свои координаты по X или по Y в зависимости как далеко находятся от центра по диагонали... что бы все ровно шло и красиво

вот как-то так, сорри если не точно объяснил, утро уже :-)

заранее спасибо

Добавлено через 8 минут
все нашел на одном сайте :-)
вот кому может пригодится

Код AS3:
var dx:Number = enemy.x - hero.X;
var dy:Number = enemy.y - hero.Y;	
 
var angle = Math.atan2(dy, dx);
var dist = Math.sqrt(dx * dx + dy * dy);
 
if (dist > enemy.enemySpeed)
{
    var tgtX:Number = enemy.x - enemy.enemySpeed * Math.cos(angle);
    var tgtY:Number = enemy.y - enemy.enemySpeed * Math.sin(angle);
 
    enemy.x = tgtX;
    enemy.y = tgtY;
}
если есть другие способы, буду рад увидеть их здесь =)


Последний раз редактировалось alexcon314; 28.05.2010 в 08:32.
Создать новую тему   Часовой пояс GMT +4, время: 03:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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