DceGetCollidedObject


Автор Сообщение

частый гость
Группа: Участники
Сообщений: 23
Добавлено: 17-06-2010 23:25
DceGetCollidedObject, DceGetCollisionPosition, DceGetCollisionNormal у меня не работают, движок тупо намертво виснет. то же самое и в FPS с аналогичными функциями. хотелось бы пример их использования, может хитрость какая то есть или условия их использования... и еще хотелось бы знать почему все таки не работает гравитация и соответственно функции DCE связанные с ней. и еще. некорректно работают примеры glow и antialiasing на видюхе GF5200, какая то проблема с z буфером насколько я понимаю.. на другой машине все отлично

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 18-06-2010 10:40
DceGetCollidedObject, DceGetCollisionPosition, DceGetCollisionNormal у меня не работают, движок тупо намертво виснет. то же самое и в FPS с аналогичными функциями.

Я и сам толком не знаю, как их использовать - пока не сталкивался с необходимостью, вот и не тестировал. Возможно, это баг.

хотелось бы знать почему все таки не работает гравитация и соответственно функции DCE связанные с ней.

Баг. Кстати, пренеприятнейший. Из-за него приходится изобретать велосипед и писать собственную гравитацию.

некорректно работают примеры glow и antialiasing на видюхе GF5200

В обоих используется рендеринг в текстуру - я слышал, связанные с этим функции OpenGL не на всех видеокартах работают одинаково хорошо. Может, в этом проблема?

частый гость
Группа: Участники
Сообщений: 23
Добавлено: 23-06-2010 02:00
понятно... тогда еще вопрос.

cast = ObjectRaycast(down,level_floor_pc);
ground_normal = abs(ObjectGetCollisionNormal(1));

down - dummycube направленный вниз)
level_floor_pc - freeform формата obj, нормали в порядке

я по идее должен получить Y нормаль полигона.. т.е. определить плоская поверхность подо мной или наклонная.

но ground_normal почему то принимает бешеные значения. причем даже если level_floor_pc просто плоскость разбитая на triangles то ground_normal не всегда принимает одно значение.. может я чего то не понял. помогите please^^

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 23-06-2010 11:33
Проверь, не повернута ли плоскость функциями ObjectPitch, ObjectTurn, ObjectRotate и т.д. С повернутыми объектами raycasting работает некорректно.

частый гость
Группа: Участники
Сообщений: 23
Добавлено: 24-06-2010 19:07
нет. при экспорте из 3дмакса она переворачивается сама как надо т.е. Y вертикальная ось.. вообще пытаюсь таким образом сделать чтобы если земля слишком наклонная допустим > 45гр то игрок соскальзывал вниз но если меньше то стоял на ней. гравитация ручная
if jump > -3.1 jump -= 0.1 else jump = -3.1;
if jump < 0 in_jump = false;
if in_stand == true && in_jump == false jump = 0;

if (abs(DceGetVelocity(actor_position,0)) > 0.03) || (abs(DceGetVelocity(actor_position,2)) > 0.03) in_move = true else in_move = false;

in_stand = ObjectCheckCubeVsFace(actor_stand,level_floor_pc);
if in_stand == false DceSetFriction(actor_position,0) else DceSetFriction(actor_position,2);

if in_move == true && in_stand == true && in_jump == false DceApplyAcceleration(actor_position,0,-1.8,0);
if in_stand == false || in_jump == true DceApplyAcceleration(actor_position,0,jump,0);
if in_move == false && in_stand == true DceStopAbsAcceleration(actor_position);

actor_position - dce dummycube
actor_stand - cube находящийся в ногах; заменяет DceGravityCollided
level_floor_pc - static dce

in_jump - состояние в прыжке но не в падении
in_stand - состояние "касается земли"
in_move - движется горизонтально

все работает в принципе сносно но с использованием нормалей было бы лучше

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 25-06-2010 14:08
Да, но каждый шаг стрелять лучом - не упадет ли производительность? Raycasting вроде как не для таких целей предназначен. Для стрельбы - да, но для проверки угла наклона поверхности - вряд ли...
Я как-то раз столкнулся с аналогичной задачей, когда делал вот это. Надо было поворачивать корабль в зависимости от наклона трассы. Я это решил при помощи ObjectGetGroundHeight и четырех контрольных точек по углам плоскости вращения; вектора отрезков между ними дали мне эти самые углы наклона.

 

Offtop.ru © 2003