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

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

Ответ
 
velmir

offline
Опыт: 8,257
Активность:
Параболический прыжок - ???
И так в чем сама проблема есть ландшафт ват он pp.vk.me/c619521/v619521284/29294/u41z-9PZ8PM.jpg
как вы поняли внутри камней блокиировка пути(суша) также имеется рабочий параболический прыжок на джасе, с указываньем точки позиции прыжка..
так вот в чем собственно вопрос, как сделать так чтобы навидя даный спел на камень(в котором в нутри блокровка пути) нас не кидало внутрь камня..
также высылаю и код прыжка, пробывал в нем, написать проверку, на наличия в радиусе етого декора, но наверно гдето ошибка.
» код прыжка
struct Jamp_Data
private static timer t = CreateTimer()
private static integer Data[]
private static integer Count = -1
unit u
real targetX
real targetY
real unitX
real unitY
real DistH
real speed = 5.00
real Height = 6.12
real Angle
real Distance
real tempPointX
real tempPointY
real d
real unitH
real upH
real dawnH
real DistanceA
boolean gah,fjamp
rect RO
real RJ=175
private method StopAction takes integer j returns nothing
set Data[j] = Data[Count]
set Count =Count-1
u=null
targetX=0
targetY=0
unitX =0
unitY=0
DistH=0
Angle=0
Distance=0
tempPointX=0
tempPointY=0
d=0
unitH =0
upH=0
dawnH =0
fjamp=false
if Count == -1 then
call PauseTimer(t)
endif
endmethod
private static method JampAnaliz takes nothing returns nothing
local thistype this
if GetDestructableTypeId(GetEnumDestructable()) == 'YTpc' {
fjamp=true
}
endmethod
private static method JampTaimer takes nothing returns nothing
local thistype this
local integer i = 0
loop
exitwhen i > Count
set this = Data[i]
unitX=GetUnitX(u)
unitY=GetUnitY(u)
set RO = Rect(unitX - RJ, unitY - RJ, unitX + RJ, unitY + RJ)
call EnumDestructablesInRect(RO, filterEnumDestructablesInCircleBJ, function thistype.JampAnaliz)
call RemoveRect(RO)
set RO=null
if fjamp==false{
tempPointX = GetUnitX(u) + speed * Cos(Angle * bj_DEGTORAD)
tempPointY = GetUnitY(u) + speed * Sin(Angle * bj_DEGTORAD)
}
unitH = GetUnitFlyHeight(u)
Distance++
if Distance<=d then
upH = unitH + Height
call SetUnitFlyHeight(u,upH,unitH)
else
dawnH = unitH - Height
call SetUnitFlyHeight(u,dawnH,unitH)
endif
unitH = GetUnitFlyHeight(u)
if Distance>0.00 and GetUnitState(u, UNIT_STATE_LIFE) != 0 and Distance <= DistanceA and fjamp==false then
call SetUnitX(u,tempPointX)
call SetUnitY(u,tempPointY)
else
call SetUnitFlyHeight(u,0,0)
call UnitRemoveAbility(u, 'JUMP')
call SetUnitPathing(u, true)
call StopAction(i)
call destroy()
endif
set i=i+1
endloop
endmethod
public static method Jamp_Init takes unit Caster,real x,real y,real ug returns nothing
local thistype this = thistype.create()
set Count=Count+1
set Data[Count] = this
fjamp=false
u=Caster
targetX = x
targetY = y
unitX = GetUnitX(u)
unitY = GetUnitY(u)
Angle = ug
call SetUnitFacing(u, Angle)
DistH = SquareRoot((targetX - unitX) * (targetX - unitX) + (targetY - unitY) * (targetY - unitY))
if DistH>320{DistH=320}
call SetUnitPathing(u, false)
call UnitAddAbility(u, 'JUMP' )
Distance=0
DistanceA=DistH / speed
d = DistanceA / 2
unitH = GetUnitFlyHeight(u)
if Count == 0 then
call TimerStart(t, 0.01, true, function thistype.JampTaimer)
endif

endmethod
endstruct
зы разумеется ето сам код прыжка, сам запускатор и так понятен, прыжок рабочий тока вот неправдоподобно пашет яб сказал
velmir добавил:
блин теги не работают (

Отредактировано velmir, 07.09.2014 в 23:26.
Старый 07.09.2014, 21:39
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Hate добавил:
пробовал поставить на камень невидимую платформу?
Старый 07.09.2014, 23:13
velmir

offline
Опыт: 8,257
Активность:
мне ненужно чтоб по поверхности камня можно было ходить, нада чтоб прыжок прекращялся как таковой, в моем случае нада чтоб "fjamp=false"
Старый 07.09.2014, 23:25
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
так как можно будет ходить если обнести камень блокираторами?
Старый 07.09.2014, 23:26
velmir

offline
Опыт: 8,257
Активность:
перепрыгнув блокираторы что стоят вокруг камня.. прыжок кидает в нутрь даже к примеру квадратной области которая полностью с квадратов состоит
Старый 07.09.2014, 23:31
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
я решал невозможность прыжка рассчетом всего пути прыжка и выставлении конечной точки перед препятствием которое невожможно перепрыгнуть, другой выход у меня был проверять на проходимость и не пускать дальше если тип проходимости полета был неразрешен
Старый 08.09.2014, 00:04
velmir

offline
Опыт: 8,257
Активность:
Hate:
проверять на проходимость
я тоже проверяю на проходимойсть(ищю блокиратор пути в радиусе. тока вот гдето в коде ошибка, по тому как функция ответа на наличие преграды не работает
Старый 08.09.2014, 00:16
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
velmir:
Hate:
проверять на проходимость
я тоже проверяю на проходимойсть(ищю блокиратор пути в радиусе. тока вот гдето в коде ошибка, по тому как функция ответа на наличие преграды не работает
нет не проверяешь
Старый 08.09.2014, 00:18
velmir

offline
Опыт: 8,257
Активность:
velmir:
set RO = Rect(unitX - RJ, unitY - RJ, unitX + RJ, unitY + RJ)
call EnumDestructablesInRect(RO, filterEnumDestructablesInCircleBJ, function thistype.JampAnaliz)
call RemoveRect(RO)
set RO=null
а ето что?
velmir добавил:
или есть иная функция какая то? для анализа самой почвы
velmir добавил:
if ( not ( IsTerrainPathableBJ(GetUnitLoc(GetTriggerUnit()), PATHING_TYPE_WALKABILITY) == true ) ) then не оно?
Старый 08.09.2014, 00:23
Ancient
Щпаовапа
offline
Опыт: 38,370
Активность:
IsTerrainPathableBJ
инверсная функция, надеюсь ты помнишь об этом.
Старый 08.09.2014, 00:30
velmir

offline
Опыт: 8,257
Активность:
канешн, просто скопировал функцию с редактора а так сделаю как нада
а все разобрался не ту переменую ++

Отредактировано velmir, 08.09.2014 в 01:16.
Старый 08.09.2014, 01:01
ScorpioT1000
Работаем
offline
Опыт: отключен
если прыжок умный (работает в 3D), то просто поставь платформы на большой высоте и он должен в них ударяться, думая, что это стена
Старый 08.09.2014, 10:02
velmir

offline
Опыт: 8,257
Активность:
увы ни какими образами не работает именно так как нада,...
ScorpioT1000:
большой высоте
ну ставил высоту гдето под 600
velmir добавил:
в принцепи могу сделать видео роботоспособности с пела и собственно самых проблем с блокираторами пути
Старый 08.09.2014, 20:19
velmir

offline
Опыт: 8,257
Активность:
проблема решина можна закрывать
Старый 19.09.2014, 21:00
DioD

offline
Опыт: 45,134
Активность:
как и чем, решение в студию.
Старый 20.09.2014, 05:43
velmir

offline
Опыт: 8,257
Активность:
самым простым с джсовой структуры дал сылку на работоспособную проверку декора на гуи, не самое оптимально решене но работает
Старый 21.09.2014, 12:27
Ответ

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

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

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

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



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