XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
alexkill

offline
Опыт: 18,872
Активность:
Как правильно отследить, находится ли юнит за спиной?
Нашел по этому вопросу две функции Jon'а, только они срабатывают не всегда корректно. Может, что-то не так делаю?

Вот первая:

Код:
function IsUnitBack takes unit uF, unit uWhichBack returns boolean
   local real r1 = bj_RADTODEG * Atan2(GetUnitY(uWhichBack) - GetUnitY(uF), GetUnitX(uWhichBack) - GetUnitX(uF))+360
   local real r2=GetUnitFacing(uWhichBack)+360
   return r1<=(r2+60) and r1>=(r2-60)
endfunction


Вот вторая:

Код:
function HeIsBack takes unit u1, unit u2 returns boolean
    local real ang = 600 + GetUnitFacing(u1)
    local real ang2 = 360 + bj_RADTODEG * Atan2(GetUnitY(u2) - GetUnitY(u1), GetUnitX(u2) - GetUnitX(u1))
    return ang2 < ang and ang2 > ang - 120
endfunction


Карта-пример прилагается. Эффект (в моем случае - убийство при атаке со спины) применяется отнюдь не ко всем.
Прикрепленные файлы
Тип файла: w3x Attacked.w3x (17.4 Кбайт, 9 просмотров )

Отредактировано alexkill, 10.07.2008 в 13:00.
Старый 10.07.2008, 12:47
J
expert
offline
Опыт: 48,447
Активность:
Код:
function IsUnitBack takes unit uF, unit uWhichBack returns boolean
   local real r1 = bj_RADTODEG * Atan2(GetUnitY(uWhichBack) - GetUnitY(uF), GetUnitX(uWhichBack) - GetUnitX(uF)) + 360
   local real r2 = GetUnitFacing(uWhichBack) + 360
   if GetUnitY(uWhichBack) < GetUnitY(uF) then
       set r1 = r1 + 360
   endif
   return r1<=(r2+60) and r1>=(r2-60)
endfunction

Отредактировано Jon, 10.07.2008 в 15:40.
Старый 10.07.2008, 15:33
alexkill

offline
Опыт: 18,872
Активность:
Jon, спасиб, вроде работает!
Старый 10.07.2008, 15:58
J
expert
offline
Опыт: 48,447
Активность:
новсякий случай подправил посты, откуда ты взял эти функции, на этот вариант...
Старый 10.07.2008, 21:01
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 23:21.