Участник
Пользователь
- Сообщения
- 78
- Реакции
- 65
Здравствуйте, пытаюсь сделать плагин исправляющий surf bug (это баг когда наклонная поверхность тормозит игрока до 0, чем больше его FPS, тем чаще баг)
Для этого нужно определить находится ли игрок сейчас на наклонной поверхности. Делаю я это через функцию trace_hull и переменную TR_vecPlaneNormal.
1. Хороший ли это способ получение наклона поверхности под игроком или есть получше, какой?
2. Можно ли где-то увидеть исходный код функции TRACE_HULL?
3. С какими параметрами для trace_hull вычисляется glb_trace_plane_normal? И как часто, каждый кадр? (Это вопрос от любопытства, для моего плагина эта глобалка не годится, вызывает баг с наклонным телепортом)
Для этого нужно определить находится ли игрок сейчас на наклонной поверхности. Делаю я это через функцию trace_hull и переменную TR_vecPlaneNormal.
Код:
static Float:playerOrigin[3], Float:planeNormal[3], Float:traceHullEnd[3]
traceHullEnd[0] = playerOrigin[0]
traceHullEnd[1] = playerOrigin[1]
traceHullEnd[2] = playerOrigin[2] - 0.01 // "трейсим" под игроком
engfunc(EngFunc_TraceHull, playerOrigin, traceHullEnd, IGNORE_MONSTERS | IGNORE_MISSILE, hull, id, 0)
get_tr2(0, TR_vecPlaneNormal, planeNormal) // нормаль поверхности под игроком?
rampAngle = planeNormal[2] // Искомый угол поверхности под игроком получен
1. Хороший ли это способ получение наклона поверхности под игроком или есть получше, какой?
2. Можно ли где-то увидеть исходный код функции TRACE_HULL?
3. С какими параметрами для trace_hull вычисляется glb_trace_plane_normal? И как часто, каждый кадр? (Это вопрос от любопытства, для моего плагина эта глобалка не годится, вызывает баг с наклонным телепортом)
Последнее редактирование: