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

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

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

offline
Опыт: 1,855
Активность:
Точки X Y
Прошу помочь как найти точки X и Y ,которые располагаются вперёд от лица юнита на 200.
Надеюсь вы поймёте ,что я имею ввиду.
Старый 15.02.2010, 21:23
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
X+200*Cos(угол юнит фасинг(твой юнит)*bj_DEGTORAD)
Y+200*Sin(угол юнит фасинг(твой юнит)*bj_DEGTORAD)
ты это имел в виду?

Отредактировано AlexKARASb, 15.02.2010 в 22:06.
Старый 15.02.2010, 21:30
Zombak2500

offline
Опыт: 1,855
Активность:
bj_DEGTODAR ?! O_o
Юнит А стоит лицом к точке Б на расстоянии 200 , как узнать X и Y точки Б
Старый 15.02.2010, 21:33
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Zombak2500, bj_DEGTORAD - перевод из градусов в радианы
AngleBetweenPoints(A,B)
или
Atan2(x2-x1,y2-y1) сдесь уже радианы сразу

Отредактировано AlexKARASb, 15.02.2010 в 22:06.
Старый 15.02.2010, 21:37
Zombak2500

offline
Опыт: 1,855
Активность:
т.к. вы выражаетесь крайне странно или я не до понимаю вас. пожалуйста допиши вот это
set x =
set y =
Старый 15.02.2010, 21:39
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
ладно напишу полностью
Код:
local unit c=GetTriggerUnit() \\ это твой юнит
local real a=GetUnitFacing(c) \\угол куда смотрит юнит

забыл дописать сорри

local real x=GetUnitX(c) \\координата х юнита
local real y=GetUNitY(c) \\координата у юнита
SetUnitX(c,X+200*Cos(a*bj_DEGTORAD)) \\ присваиваем координате х у юнита значение 
SetUnitY(c,Y+200*Sin(a*bj_DEGTORAD)) \\ присваиваем координате х у юнита значение

при пересечении синуса и косинуса на растоянии 200 будет точка туда и переместится юнит

Отредактировано AlexKARASb, 15.02.2010 в 22:06.
Старый 15.02.2010, 21:54
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Цитата:
Сообщение от AlexKARASb
bj_DEGTODAR

bj_DEGTORAD
Старый 15.02.2010, 21:58
XOR

offline
Опыт: 38,159
Активность:
советую вынести в отдельную функцию, карасю поделить наконец bj_DEGTORAD , а не писать его, "как есть"
Старый 15.02.2010, 22:11
Zombak2500

offline
Опыт: 1,855
Активность:
» Так?
function Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'AHds'
endfunction
function Actions takes nothing returns nothing
local unit uca = GetSpellAbilityUnit()
local real Rca = GetUnitFacing(uca)
local real x=GetUnitX(uca)
local real y=GetUnitY(uca)
SetUnitX(uca,x+200*Cos(Rca*bj_DEGTORAD))
SetUnitY(uca,y+200*Sin(Rca*bj_DEGTORAD))
call CreateNUnitsAtLoc( 1, 'hfoo', GetOwningPlayer(uca), Location(x, y), Rca )
endfunction
function InitTrig_Untitled_Trigger_001 takes nothing returns nothing
set gg_trg_Untitled_Trigger_001 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Untitled_Trigger_001, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Untitled_Trigger_001, Condition( function Conditions ) )
call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Actions )
endfunction
Но у меня на 10 строчке пишет Syntax Error
Старый 16.02.2010, 16:38
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
ошибка в создании юнита
создай так
call CreateUnit(GetOwningPlayer(uca),'hfoo',x,y,Rca)

cтоп я лол ты просто забыл написать перед сетюнит call!!!
call SetUnitX
Старый 16.02.2010, 17:49
XOR

offline
Опыт: 38,159
Активность:
Юзайте сjass и не пишите call
Старый 16.02.2010, 18:31
Mr_ILYAS
Kicked by XimikS
offline
Опыт: 492
Активность:
всё правильно тебе расписали в самом начале допустим unit u имеет координаты x1,y1
а искомую точку Б обозначим координатами x2,y2
x1 это GetUnitX(u)
y1 это GetUnitY(u)
тогда решение выглядит так:
set x2=GetUnitX(u)+200*Cos(GetUnitFacing(u)*bj_DEGTORAD)
set y2=GetUnitY(u)+200*Sin(GetUnitFacing(u)*bj_DEGTORAD)
где bj_DEGTORAD — это константа, при умножении на которую мы переводим градусы в радианты
Degris To Radian (сокращённо DEGTORAD)
угол в радиан
тоесть мы переводим угол поворота лица юнита в радианы умножив на эту константу
Старый 16.02.2010, 23:04
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
function Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'AHds'
endfunction
function Actions takes nothing returns nothing
local unit uca = GetSpellAbilityUnit()
local real Rca = GetUnitFacing(uca)
local real x=GetUnitX(uca) 
local real y=GetUnitY(uca)
call SetUnitX(uca,x+200*Cos(Rca*bj_DEGTORAD))
call SetUnitY(uca,y+200*Sin(Rca*bj_DEGTORAD))
call CreateNUnitsAtLoc( 1, 'hfoo', GetOwningPlayer(uca), Location(x, y), Rca )
endfunction
function InitTrig_Untitled_Trigger_001 takes nothing returns nothing
set gg_trg_Untitled_Trigger_001 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Untitled_Trigger_001, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Untitled_Trigger_001, Condition( function Conditions ) )
call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Actions )
endfunction
Старый 17.02.2010, 00:55
Zombak2500

offline
Опыт: 1,855
Активность:
AlexKARASb, Hellfim, спс, понял всё
XiMiKs, а на русском есть мануал? я так понял это 'C' + 'Jass'. Если да ,то думаю выучу я 'С' учил
Старый 17.02.2010, 11:20
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Старый 17.02.2010, 11:32
Закрытая тема

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

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

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

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



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