Тема: Камера...
Показать сообщение отдельно
Старый 18.06.2009, 21:25   #74
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Камера...

хера 5 страниц нафлудили о_0
ну ваще всё проще

есть чел.
ставим в него пивот, в место на которое будет смотреть камера.
в голову обычно.

ставим камеру за челом, парентуем её к пивоту.

просто вращаем пивот с помощью mousexspeed()/mouseyspeed(), так же как мы вращаем камеру в виде от 1 лица (а примеров такой камеры инет полон), при этом камеру поинтим на него.

теперь УЖЕ в результате нехитрых манипуляций мы сможем смотреть вокруг перса. по хорошему конечно можно ещё долго совершенствовать, в большинстве игр движение камеры вокруг перса не идёт тупо по сфере, ну и плюс коллизия камеры должна быть (блицевской коллизией элементарно делается так же как в кастле а вот с физыксом мудренее).

терь чтоб чел ехал в сторону куда мы смотрим делаем как-то так:

TformVector 0,0,1,cam,Character
tx#=tformedx#()
ty#=tformedy#()
tz#=tformedz#()

этим мы трансформируем направление "вперед по z" из пространства камеры в пространство чела. другими словами, если для уезда вперёд камере нужно применить moveentity cam,0,0,1 то для мува в ту же сторону другому объекту нужно конвернуть это значение в его локальную систему.

по идее есть мувить теперь перса на tx,ty,tz он будет мувится туда же куда смотртит камера.
чтоб он не летел вверх и вниз тут надо чето ограничить, во-первых конечно не мувить по у, во-вторых сдаётся мне не использовать дробные значения а то скорость будет всегда разной.
лучше так:
MoveEntity Character,Sgn(tx),0,Sgn(tz)

Sgn возвращает знак числа, т.е хоть у нас 0.5, 0.25 или 0.99 все равно будет 1 (или -1 или 0).

терь по ходу надо чтоб он ротейтился в сторону куда идёт.
ну тут много вариантов, можно самому вычислять, можно припарентить к камере пивот который всегда будет спереди и ПЕРЕД персом и поинтить его туда, обнуляя затем все ротации кроме Y.

а кстати нельзя парентить пивот к персу а то кажется чето не то будет когда он повернётся.
надо просто ставить его в цикле в позицию бошки.

приводит всё это в виде детального рабочего кода мне увы совсем нет времени да и блица на этом компе не стоит, но в теории вышесказанное должно работать)
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
ABTOMAT (18.06.2009), Mhyhr (18.06.2009), Ziro(AL) (02.01.2010)