![]() |
Перемещени объектов
Перемещени объектов с помощью мыши в 3д стратегий... как лючше сделать? кто подскажет? (интересуют плавныфй паворот и непосредствено анимация движения) Просьба не писать что то типа береш угол поварачиваеи и перемещаеш... Хочется поподробнеи так как пытался сделать сам получается не очень...
|
Re: Перемещени объектов
WareZ_MEN, а ты чо за стратегию пишеш? мож лучше к нам присоеденишся, а?
насчет угла: скорее всего тебе нужен плавный поворот тока вокруг оси Y. Имеем два объекта ent1,ent2. ent1 нужно плавно повернуть на ent2. 1. Определяем разность углов, командой DeltaYaw, синтаксис такой dy=deltayaw(ent1,ent2), возвращает угол, на который надо повернуть объект ent1, чтобы он стал "смотреть" на объект ent2. 2. Собственно поварачиваем объект на некоторую часть етого значения, например TurnEntity ent1,0,deltaYaw(ent1,ent2)*0.1,0. 3. Возможно надо поварачивать объект по другому (РТС как - никак), т.е. чтобы объект поварачивался на нное число градусов пока не станет смотреть на ent2, для етого мы делаем так: spd - скорость с которой крутится объект, тогда if abs(deltayaw(ent1,ent2))>spd ; если объект повернут на угол, больше предельной скорости вращения turnentity ent1,0,sgn(deltayaw(ent1,ent2))*spd,0 ;sgn - возвращает знак аргумента, т.е. положительное число вернет 1, отрицательное -1, а ноль вернет 0. else turnentity ent1,0,deltayaw(ent1,ent2),0 ; повернем наш объек прям на тот endif вроде все, могу ошибаться в команде sgn, возможно она пишется как sign. по поводу перемещения - MoveEntity. Двигать скорее всего придется тогда и только тогда, когда етот самый результат (DeltaYaw), меньше определенного значения (45 например), чтоб объект не пытался уехать назад. |
Re: Перемещени объектов
HolyDel спасибо за предложение :) Вынужден отказатся :) Я видал эту функция у вас в проекте :) Вот пытался ей воспользоватся, но получается фигна какая то :) обект все врема поварацивается не лицом а задом :)
до тех пор пока яне ставлю в dy=deltayaw(ent1,ent2) не ставлю dy=-deltayaw(ent1,ent2). Но тогда получается что анемация не останавливается. TurnSelectUnits() я вызываю в основном цикле... Код:
.... |
Re: Перемещени объектов
попробуй :
If Abs(dy#)>speedy# Then TurnEntity ent1,0,speedy#*Sgn(-dy),0,1 Else TurnEntity ent1,0,-dy#,0,1 |
Re: Перемещени объектов
HolyDel вообще разницы нет где я минус поставлю я писал о нем выше... Да поварачивается нормально но анимация не останавливается... тоесть не срабатывает условие
Код:
..... |
Re: Перемещени объектов
да, сорри за дезу, чо то я ступил.
посмотри, чо ф-ия возвращает, и уже на основе этого ставь условие. возможно так if abs(yaw-180)<2 , или чо то в етом роде. кстати, а поворачивается объект нормально? туда куда надо? ЗЫ. в WT они поччему то крутятся куда надо. |
Re: Перемещени объектов
Да поварачивается туда куда нужно а что функция возвращает понять не могу как то страно выводится будто 2 значания меняются очень быстро вроде как -178 и 180 чета такое носложно сказать наверняка...
if abs(yaw-180)<2 не помогло |
Re: Перемещени объектов
if abs(abs(yaw)-180)<3
|
Re: Перемещени объектов
В серавно... вот ели минус убрать то останавливается но поварачивается задом...
|
Re: Перемещени объектов
Сори затупил пипец..... все разобрался :)
я if abs(abs(yaw)-180)<3 я скопировал твою строчку :) а переменую не переименовал yaw у меня то yaw1 :) Спасибо за помощь! |
Часовой пояс GMT +4, время: 02:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot