Автор | Сообщение | ||
May~CRY~ частый гость Группа: Участники Сообщений: 23 |
Добавлено: 17-06-2010 23:25 | ||
DceGetCollidedObject, DceGetCollisionPosition, DceGetCollisionNormal у меня не работают, движок тупо намертво виснет. то же самое и в FPS с аналогичными функциями. хотелось бы пример их использования, может хитрость какая то есть или условия их использования... и еще хотелось бы знать почему все таки не работает гравитация и соответственно функции DCE связанные с ней. и еще. некорректно работают примеры glow и antialiasing на видюхе GF5200, какая то проблема с z буфером насколько я понимаю.. на другой машине все отлично | |||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 18-06-2010 10:40 | ||
Я и сам толком не знаю, как их использовать - пока не сталкивался с необходимостью, вот и не тестировал. Возможно, это баг.
Баг. Кстати, пренеприятнейший. Из-за него приходится изобретать велосипед и писать собственную гравитацию.
В обоих используется рендеринг в текстуру - я слышал, связанные с этим функции OpenGL не на всех видеокартах работают одинаково хорошо. Может, в этом проблема? |
|||
May~CRY~ частый гость Группа: Участники Сообщений: 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^^ |
|||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 23-06-2010 11:33 | ||
Проверь, не повернута ли плоскость функциями ObjectPitch, ObjectTurn, ObjectRotate и т.д. С повернутыми объектами raycasting работает некорректно. | |||
May~CRY~ частый гость Группа: Участники Сообщений: 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 - движется горизонтально все работает в принципе сносно но с использованием нормалей было бы лучше |
|||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 25-06-2010 14:08 | ||
Да, но каждый шаг стрелять лучом - не упадет ли производительность? Raycasting вроде как не для таких целей предназначен. Для стрельбы - да, но для проверки угла наклона поверхности - вряд ли... Я как-то раз столкнулся с аналогичной задачей, когда делал вот это. Надо было поворачивать корабль в зависимости от наклона трассы. Я это решил при помощи ObjectGetGroundHeight и четырех контрольных точек по углам плоскости вращения; вектора отрезков между ними дали мне эти самые углы наклона. |
Offtop.ru © 2003 |