forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Залоченная камера (http://forum.boolean.name/showthread.php?t=8382)

karry 26.05.2009 14:40

Залоченная камера
 
Сделал плавную камеру следующую за юнитом. При нажатии на кнопочку cam_lock происходит вот это :

Код:

Function CamLock(target)
                camdyaw#=DeltaYaw#(campv,target)
                camdpitch#=DeltaPitch#(mainCam,target)
                TurnEntity campv,0,camdyaw#/10,0       
                TurnEntity mainCam,camdpitch/10,0,0
               
                camdis#=Sqr(Pow(EntityX(campv)-EntityX(unit01\pivot))+Pow(EntityZ(campv)-EntityZ(unit01\pivot)))
                If camdis>80 Then
                        MoveEntity campv,0,0,1
                Else If camdis<30 Then
                        MoveEntity campv,0,0,-1
                Else If camdis>75 And camdis<=80 Then
                        MoveEntity campv,0,0,.1
                EndIf
End Function

Собственно проблема в том что если я перемещаю только камеру - всё идеально и плавно. А если перемещать сам юнит за которым должна следовать камера - камера перемещается заметными рывками.
Чего не хотелось бы.

karry 26.05.2009 15:02

Ответ: Залоченная камера
 
Хм, вроде сделал, изменил строчку
Код:

If camdis>80 Then
                        MoveEntity campv,0,0,1

на
Код:

If camdis>80 Then
                        MoveEntity campv,0,0,camdis/300


Sleepybear 26.05.2009 15:05

Ответ: Залоченная камера
 
У тебя вид от 3-его лица?

karry 26.05.2009 15:25

Ответ: Залоченная камера
 
Ага. Делаю TBS.

Sleepybear 26.05.2009 16:40

Ответ: Залоченная камера
 
помоему проще было- бы

а вместо лабудистики с корнем и дельтой углов

поставить пивот позади юнита

camera =createcamera()

User=createUser()
pivot=createpivot(User )
positionentity pivot ,0,3,-5

потом

camspeed= (скорость камеры скажем 10)

curX#=EntityX(Camera, True
destX#=EntityX(pivot,True)
x#=((destX#-curX#)/camspeed)

TranslateEntity Camera,x,y,z
PointEntity Camera, User

соответственно y и z сдать также и будет тебе счастье
:)

karry 26.05.2009 17:09

Ответ: Залоченная камера
 
Проще, но не отвечает поставленным задачам. Говорю же, TBS, а не TPS.
Кроме того, у тебя получается длина вектора, а эта лабудистика с корнем находит длину проекции вектора на плоскость, чтобы допустим, можно было смотреть на юнит сверху с достаточного расстояния.

А дельта нужна потому, что я не могу сделать Pointentity, собьются оси камеры. С дельтой я могу поднимать камеру вертикально вверх не теряя юнит из вида.

MiXaeL 26.05.2009 17:19

Ответ: Залоченная камера
 
Цитата:

я не могу сделать Pointentity, собьются оси камеры.
Но ведь всегда можно сдвигать и поворачивать объект в глобальных осях. Впрочем, делай так, как самому удобнее.

Sleepybear 26.05.2009 17:22

Ответ: Залоченная камера
 
Сори, но походу я не совсем понял тебя.

karry 26.05.2009 17:34

Ответ: Залоченная камера
 
Цитата:

Но ведь всегда можно сдвигать и поворачивать объект в глобальных осях.
А она и поворачивается в глобальных. И сдвигается тоже, но только по Y. Наверное можно сделать локальный стрейф камеры в глобальных координатах, но подозреваю что это будет намного больший геморрой.
А так имею полный контроль над камерой всего в 10 клавиш. Повороты влево-вправо, вверх-вниз с сохранением ориентации движения, стрейф, горизонтальное и вертикальное движение.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot