Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 25.05.2009, 18:02   #16
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Скорость юнита

не знаю о чем развговор, но глянь это http://forum.boolean.name/showthread...E5%EA%F2%EE%F0
(Offline)
 
Ответить с цитированием
Старый 25.05.2009, 19:01   #17
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Скорость юнита

Чтоб не заводить новую тему, о повороте.
Хэлп плиз, что тут не так... ни чего в голову не идет, как этот косяк обойти.
============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==============
(Offline)
 
Ответить с цитированием
Старый 25.05.2009, 20:13   #18
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Скорость юнита

Нет, послушайте, это чокнуться можно, два дня уже сижу не могу сделать плавный поворот.

Пробовал через Atan2 - так он только к глобальной системе координат применяется, как его использовать в связке с системой координат юнита - х.з.

Пробовал через DeltaYaw - та же хрень, ну неправильно угол определяется !!!
Вот откопал на форуме кусок кода, HolyDel пишет :
function smoothturn(ent1,ent2,speed# = 1)
s# = DeltaYaw(ent1,ent2)
turnentity ent1,0,speed * sign(s),0
endfunction
И таки-да, вращается, в нужную сторону, но стоит добавить условие когда он должен остановить вращение - и всё рассыпается.

МЛЯ !!! Мозги кипят.
(Offline)
 
Ответить с цитированием
Старый 27.05.2009, 09:25   #19
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Скорость юнита

Нашел способ избавиться от косяка.
Поворот с AlignToVector, но нужно чтоб вэйпоинт менял свое положение в близи своих координат. Причем чем дальше он от юнита, тем сильнее должно быть отклонение, т.е. пропорционально дистанции.
Способ странный, но надежно работает.
(Offline)
 
Ответить с цитированием
Старый 27.05.2009, 12:15   #20
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Скорость юнита

Я сделал через сравнение Yaw. Примерно 1 раз из 10 глючит, но всё же лучше чем ничего.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить пересечение пути юнита с определенным объектом? stone_evil 3D-программирование 22 14.05.2009 17:35
Скорость Fant 3D-программирование 36 24.06.2007 01:21
Скорость smaller 3D-программирование 5 21.08.2006 16:02


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com