Ответ: Камера...
хера 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.
а кстати нельзя парентить пивот к персу а то кажется чето не то будет когда он повернётся.
надо просто ставить его в цикле в позицию бошки.
приводит всё это в виде детального рабочего кода мне увы совсем нет времени да и блица на этом компе не стоит, но в теории вышесказанное должно работать)
|