![]() |
Ответ: Скорость юнита
не знаю о чем развговор, но глянь это http://forum.boolean.name/showthread...E5%EA%F2%EE%F0
|
Ответ: Скорость юнита
Чтоб не заводить новую тему, о повороте.
Хэлп плиз, что тут не так... ни чего в голову не идет, как этот косяк обойти. ============Copy============== ;чтобы засечь глюк, нужно сразу после загрузки ;кликнуть ровно сзади `юнита` ;а он падла поедет вперд :( ;при втором типе поворота вообще кавардак, ;хотя теоретически должно быть все в елочку Graphics3D 1024,768,0,1 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,10,-10 RotateEntity CreateLight (),33,33,0 Global TempPivot=CreatePivot () Land=CreatePlane () : EntityColor Land,0,100,0 : EntityPickMode Land,2 Unit=CreateCube () : ScaleEntity Unit,.5,.5,1 : EntityColor Unit,0,0,100 WayPoint=CreateCube () : ScaleEntity WayPoint,.05,1,.05 : EntityColor WayPoint,100,0,0 PointEntity camera,Unit Trigger=-1 Repeat;====== If MouseHit (1) CP=CameraPick (camera,MouseX(),MouseY()) If CP PX%=PickedX() PZ%=PickedZ() PositionEntity WayPoint,PX,0,PZ EndIf EndIf d#=EntityDistance(Unit,WayPoint) If d#>0.1 If Trigger<0 Align1(Unit, WayPoint, 0.15) Else Align2(Unit, WayPoint, 0.15) EndIf MoveEntity Unit,0,0,0.1 EndIf If KeyHit (57) Trigger=-1*Trigger ;пробелом RenderWorld Rect MouseX(),MouseY(),2,2 If Trigger<0 Text 50,50, "Align1" Else Text 50,50, "Align2" EndIf Flip Until KeyHit(1) ;====== End Function Align1(Entity, WP, AlignRate#) dx#=EntityX(WP,1) - EntityX(Entity,1) dz#=EntityZ(WP,1) - EntityZ(Entity,1) AlignToVector Entity, dx, 0, dz , 3 , AlignRate# RotateEntity Entity,0,EntityYaw (Entity,1),0,1 ; чтоб не перевернуло, не влияет на баг с поворотом End Function Function Align2(Entity, WP, AlignRate#) PositionEntity TempPivot , EntityX(Entity,1) , 0 , EntityZ(Entity,1),1 PointEntity TempPivot,WP Yaw#= ( EntityYaw(TempPivot,1) - EntityYaw(Entity,1) ) *AlignRate# TurnEntity Entity,0,Yaw#,0 End Function ============Past============== |
Ответ: Скорость юнита
Нет, послушайте, это чокнуться можно, два дня уже сижу не могу сделать плавный поворот.
Пробовал через Atan2 - так он только к глобальной системе координат применяется, как его использовать в связке с системой координат юнита - х.з. Пробовал через DeltaYaw - та же хрень, ну неправильно угол определяется !!! Вот откопал на форуме кусок кода, HolyDel пишет : Код:
function smoothturn(ent1,ent2,speed# = 1) МЛЯ !!! Мозги кипят. |
Ответ: Скорость юнита
Нашел способ избавиться от косяка.
Поворот с AlignToVector, но нужно чтоб вэйпоинт менял свое положение в близи своих координат. Причем чем дальше он от юнита, тем сильнее должно быть отклонение, т.е. пропорционально дистанции. Способ странный, но надежно работает. |
Ответ: Скорость юнита
Я сделал через сравнение Yaw. Примерно 1 раз из 10 глючит, но всё же лучше чем ничего.
|
Часовой пояс GMT +4, время: 18:28. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot