Уже вторую неделю мучаюсь над телом игрока, до этого передвигал его с помощью NewtonBodySetMatrix, всё бы хорошо но боксы иногда таки залетали в игрока. По сему сделал передвижение тела игрока через NewtonSetBodyForce, но тут вылезла новая проблема боком, тело игрока начало вращать при ударах по нему физ боксов. Хотел бы узнать как можно выключить вращение для определенных боксов? И как с этим боролся тов. Xaerox?
Очень просто. Контроллер игрока реализован по принципу physics shadow. Его двигает движковый код, а за ним каждый кадр телепортируется физбокс. При этом физбоксу надо обновлять скорости, чтобы игрок мог толкать другие объекты.
Минус этого подхода в том, что как следует потоптавшись на каком-нибудь пистолетике
(мелком несолидном объекте, но тем не менее физическом), его можно "продавить" в пол. Но в остальном - всё более-менее работает.
Цитата:
pRoxxx писал: Хотел бы узнать как можно выключить вращение для определенных боксов?
Поставить огромный момент инерции по всем осям, скажем 1e9?
См. функцию NewtonBodySetMassMatrix.
Physics shadow в смысле ? NewtonCreateConvexHullModifier/NewtonConvexHullModifierSetMatrix? Если через NewtonBodySetMatrix то объекты пролетают иногда через игрока ибо мы телепортируем бокс игрока.
Это терминология хл2. В волатиле это просто называется static. И для дверей/поездов, и для игрока.
Цитата:
pRoxxx писал: Если через NewtonBodySetMatrix то объекты пролетают иногда через игрока ибо мы телепортируем бокс игрока.
Объекты пролетают потому, что это ньютон такой.
Интересно, через сколько времени ты начнёшь его проклинать, а заодно разработчика вместе со всеми его родственниками? Я где-то через полгода начал.
XaeroX писал: Интересно, через сколько времени ты начнёшь его проклинать, а заодно разработчика вместе со всеми его родственниками? Я где-то через полгода начал.
Уже проклинаю. (= Прошло чуть более полу года.
Цитата:
XaeroX писал: Ты момент инерции поставил? Что получается?
Да, чуть меньше стал крутиться, на форум им писал, они мне советую на 3.10 переходить ибо там плеер контроллер лучше, только мне этот контроллер не нужен. (=
Тогда без вариантов, делай shadow.
Если есть желание ковыряться в чужом коде и куча времени, поизучай сорцы физики бетки хл2. Там, правда, хавок, но это не принципиально.
Если желания нет (как у меня), тогда делай статичный объект с огромной массой и двигай его вручную, в коде физики игрока.
Вот код апдейта shadow из волатилы - может, поможет...
pRoxxx
Незашто.
Когда-нибудь волатила станет опенсорцной (кстати, где адамикс), тогда посмотришь всю реализацию целиком. Если, конечно, к тому времени не плюнешь на ньютон и не перейдёшь на что-то другое.