forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   PhysX: поворот камеры (http://forum.boolean.name/showthread.php?t=11893)

baton4ik 11.02.2010 21:03

PhysX: поворот камеры
 
Вопрос: у меня есть физическое тело. К нему привязан пивот. К нему привязана камера. При повороте мыши камера, тело и пивот должны крутится (я думаю, всем понятно, как). Заюзал функцию impersonalisa:

Код:

Function mouse()

V#=0.5
        u#=70
        TurnEntity cam,MouseYSpeed(),0,0
        pxBodyAddLocalTorque(player_body, 0,MouseXSpeed()/2,0,  1)        ;TurnEntity cub,0,-MouseXSpeed(),0 - это то, что было у impersonalisa(закомментированное)

        MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
        If Abs(EntityPitch#(cam))>u# RotateEntity cam,u#*Sgn(EntityPitch#(cam)),0,0
End Function

Всё вроде нормально, кроме одного:Повернул мышь - камера движется, но не перестанет, пока не вернёшь мышь в исходное положение. А мне надо, что б поворачивалось, пока ведёшь. Причём без всяких ускорений и инерций. Как реализовать?

ABTOMAT 11.02.2010 21:15

Ответ: PhysX: поворот камеры
 
А ты никогда не пробовал понять разницу между
pxBodyAddLocalTorque и TurnEntity ?
Если бы ты её понял, было бы сразу ясно, почему так происходит, и как сделать аналог TurnEntity для физикса.

baton4ik 11.02.2010 21:38

Ответ: PhysX: поворот камеры
 
о! Я уже сам нашёл! Дико извиняюсь, не подумал! pxBodySetAngularMomentum

moka 11.02.2010 23:14

Ответ: PhysX: поворот камеры
 
Крутить физ объект мышкой, к которой привязана камера? Не лучше ли крутить камеру, и при необходимости поворачивать объект как и камера?

Spiderman 12.02.2010 17:48

Ответ: PhysX: поворот камеры
 
При запуске проекта выскакивает сообщение 'Memory Acess violidation'
на функциях:
Код:

pxBodyCreateHullFromSSM() и pxCreateMetalCloth()
хотя исходник рабочий и на его основе имеется EXE. Переключатель Debug/Release не помогает. В чем может быть проблема?

baton4ik 15.02.2010 16:59

Ответ: PhysX: поворот камеры
 
У меня 2 вопроса:
1й. Как бороться с переворотом при перемещении? То есть, у меня есть физ. модель, я применяю к ней силу:
Код:

If KeyDown(17) pxBodyAddLocalForce player_body,0,0,20,0
If KeyDown(31) pxBodyAddLocalForce player_body,0,0,-20,0
If KeyDown(30) pxBodyAddLocalForce player_body,-20,0,0,0
If KeyDown(32) pxBodyAddLocalForce player_body,20,0,0,0
If KeyHit(57) and pxGetContacts(player_body)<>0 pxBodyAddForce player_body,0,600,0,0

Если высота в 2 раза меньше ширины и длины, то всё ок (но это слишком низко), а если они хотя бы равны, то моё физ. тело переворачивается. И это с кубом, с капсулой дело обстоит ещё хуже. Изменение центра тяжести помогает, но тогда прыжки уж очень стрёмно выглядят :)
2й: тут надо посоветовать. Я делаю проект, у меня есть моделлер. Я написал оболочку. Осталось вот что: моделлер должен сам вставлять модели в игру. То есть это должно выглядеть примерно так: он открывает блокнотом файл в папке с игрой, правит его, а блитц понимает (что-то вроде скриптового языка. Вроде такого:
Код:

"путь_к_модели";"путь_к_физической_модели";координата_по_Х,Y,Z;маса... (и т.д.)
А игра считывает файл, расшифровывает это и выполняет. В голову никакой реализации не приходит...

ABTOMAT 15.02.2010 17:36

Ответ: PhysX: поворот камеры
 
Замораживай поворот. И тело не будет крутиться само.
pxBodyFreezeRotationчототам (писал по памяти, мог ошибиться)
Цитата:

А игра считывает файл, расшифровывает это и выполняет. В голову никакой реализации не приходит...
Читать строку из файла.
Распарсивать её по запятым.
Из полученных значений грузить модель
??????
EoF!

Вопрос "как распарсить строку по разделителю" поднимался уже 100500 раз, ищи поиском. Буквально несколько дней назад отвечал на один такой .там же и примерчик.

baton4ik 15.02.2010 17:55

Ответ: PhysX: поворот камеры
 
Цитата:

Сообщение от ABTOMAT (Сообщение 137540)
Замораживай поворот. И тело не будет крутиться само.

А если тело упадёт с платформы и ему по всем правилам надо будет перевернутся? А заморозка не даст!

ABTOMAT 15.02.2010 20:01

Ответ: PhysX: поворот камеры
 
Ну вы, батенька, как нибудь определяйте, когда стоит размораживать, а когда нет.
Когда игрок идёт сам - не надо, когда падает кубарем - надо.
Как определять - зависит от реализации.
Не припомню, что видел такое где-то, так что стандартных решений скорее всего нет.


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

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