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

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

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

offline
Опыт: 2,825
Активность:
Не правильный расчет угла =/
Нужна помощь. Нужно расчитать угол создания юнита
((код jass
void PandaHitCast(unit trg,unit caster,real damage,real radius){
int A = 1
real x = 0.00
real y = 0.00
do{
x =GetUnitX(trg) + radius*Cos(bj_PI/4*(A*2))
y = GetUnitY(trg) + radius*Sin(bj_PI/4*(A*2))
SlideToPoint.onCast(new unit(GetOwningPlayer(caster),dPANDA,x,y,(A*90)-180),trg)
debug BJDebugMsg("-----" + I2S(A) + "------")
debug BJDebugMsg(R2S(x) + " X")
debug BJDebugMsg(R2S(y) + " X")
debug BJDebugMsg(R2S((A*90)-180) + " Angle")
debug BJDebugMsg("-----------")
}whilenot(A++==4)
clear
}
))
Cоздаешь на радиусе 300, все отлично. Если уже больше 300, то юнит который создается слева, уходит вобще далеко
Старый 31.03.2013, 16:02
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,598
Активность:
((код jass
x =GetUnitX(trg) + radius*Cos(bj_PI/4*(A*2))
y = GetUnitY(trg) + radius*Sin(bj_PI/4*(A*2))
))
Какое странное вычисление, P = 3.14 а bj_DEGTORAD = 0.0174532 следовательно формула круга будет X + расстояние * Cos( (тут рассчёт угла в градусах) * 0.0174532 )
Старый 31.03.2013, 16:18
Goodie

offline
Опыт: 2,825
Активность:
quq_CCCP, А теперь пожалуйста в формуле можно? Я вобще не шарю =/
Абсолютно не знаю что писать в расчеты =/
Старый 31.03.2013, 16:19
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,598
Активность:
Goodie, Чтобы найти точки от координаты X нужно прибавить к X число на которое ты хочешь сместить координату, затем умножить её на СOS( SIN для y ) угла в радианах, да именно в радианах, чтобы перевести углы в радианы нужно умножить угол в градусах на выражение P (пи = 3.14 и тд.) поделённое на 180, или проще говоря Угол в градусах * 0.0174532 и он переведётся в радианы.
((код jass
x + dist * Cos( angle * 0.0174532 )
y + dist * Sin( angle * 0.0174532 )
))
quq_CCCP добавил:
Goodie, напиши словами что те надо сделать, я тебе функцию скину... тока подробно со всеми значениями какие будут юзатся для теста
Старый 31.03.2013, 16:34
Goodie

offline
Опыт: 2,825
Активность:
вот так должны создатся юниты
Где стрелки, это дамми, они должны смотреть прямо на врага
Миниатюры
Кликните на картинку для увеличения
Название:  Angle.jpg
Просмотров: 23
Размер:  25.4 Кбайт  
Старый 31.03.2013, 20:00
youtube
сктыщь
offline
Опыт: 8,025
Активность:
почти так как тебе надо, ток увеличь радиус и смени угол мальца (на 180)
Старый 01.04.2013, 07:41
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,598
Активность:
((код jass
void PandaHitCast(unit trg,unit caster,real damage,real radius){
int A = 1
real x = 0.00
real y = 0.00
do{
x = GetUnitX(trg) + radius * Cos( ( 45.00 * A ) * 0.0174532 )
y = GetUnitY(trg) + radius * Sin( ( 45.00 * A ) * 0.0174532 )
SlideToPoint.onCast(new unit(GetOwningPlayer(caster),dPANDA,x,y,45.00 * a - 180.00,trg)
debug BJDebugMsg("-----" + I2S(A) + "------")
debug BJDebugMsg(R2S(x) + " X")
debug BJDebugMsg(R2S(y) + " X")
debug BJDebugMsg(R2S((A*90)-180) + " Angle")
debug BJDebugMsg("-----------")
}whilenot(A++==4)
clear
}
))
вот так проверь...
Старый 01.04.2013, 14:21
Goodie

offline
Опыт: 2,825
Активность:
quq_CCCP, Поправил вместо 45 на 90 и все ок. Спасибо. Закрывайте тему
Старый 01.04.2013, 15:58
Закрытая тема

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

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

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

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



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