![]() |
Лабиринт с шариком внутри ( проблемка)
Вобщем есть лабиринт с шаром внутри , его можно крутить ( лабиринт )
Шар под действием гравитации падает вниз , таким образом нужно проводить шар от старта к финишу. Проблема: я прописал коллизии , но иногда ( часто) шар проваливаеться сквозь лабиринт , помогите понять в чем проблема. Это просто моя МАН работа! Мне ее нужно зделать обязательно !!!! ПОМОгИТЕ РАЗОБРАТЬСЯ :4to: |
Ответ: Лабиринт с шариком внутри ( проблемка)
как он проваливается ?? в дыру в лабиринте ?? :)
нада код !! там возможно проблемы с колизийным радиусом шарика !! какой тип колизи поставил ?? |
Ответ: Лабиринт с шариком внутри ( проблемка)
PhysX туда подключай и всё будет пучком :lol:
|
Re: Лабиринт с шариком внутри ( проблемка)
2 АВТОМАТ: Можешь кинуть линк , на физикс , и какую нибудь простенькую инструкцию =) , мне ничего особенно сложного ненадо , просто чтоб шарик падал и не проваливался сквозь стенки.
2 АЛЛ: кодеГ Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,0,-50 tex=LoadTexture("road1.bmp") Global LABT=2 Global BALLT=1 ;light=CreateLight() ;RotateEntity light,90,0,0 cube=LoadMesh("lab1.3ds") ScaleEntity cube,0.1,0.1,0.12 RotateEntity cube,90,180,0 PositionEntity cube,0,0,0 EntityTexture cube,tex EntityType cube,LABT Pivot=CreatePivot() EntityParent cube,Pivot EntityRadius cube,1 ball=CreateSphere() ScaleEntity ball,1.5,1.5,1.5 PositionEntity ball,0,2,-5 EntityType ball,BALLT EntityRadius ball,1.5 ;PointEntity camera,cube Collisions BALLT,LABT,2,2 Collisions LABT,BALLT,2,2 While Not KeyDown( 1 ) TranslateEntity ball,0,-0.1,0 If KeyDown(16) Then TurnEntity Pivot,0,0,1 If KeyDown(25) Then TurnEntity Pivot,0,0,-1 UpdateWorld() RenderWorld Flip Wend End :4to: |
Ответ: Лабиринт с шариком внутри ( проблемка)
так lab1.3ds нужен.
|
Ответ: Лабиринт с шариком внутри ( проблемка)
|
Re: Лабиринт с шариком внутри ( проблемка)
|
Ответ: Лабиринт с шариком внутри ( проблемка)
|
Re: Лабиринт с шариком внутри ( проблемка)
Это не прямая ссылка , и помоему его там скачать невозможно , т.к. ( он платный )
тоисть нужен кей... Плюс мне бы какойнибуть урок простенький , по использованию. Можнно чтото и проще чем ФизИкс . Просто не хочу потерять такой прикольный проЫкт =) З.Ы. Я кинул линк на лаб1.здс - гляньте =)) |
Ответ: Лабиринт с шариком внутри ( проблемка)
Блин да я пошутил! Этот лабиринт можно и на коллизиях сделать... А если раскинуть мозгами, то и без них даже... (при условии что все дорожки в лабиринте под углом 90° то алгороитм придумать несложно)
|
Re: Лабиринт с шариком внутри ( проблемка)
Можете глянуть плз код , я не вижу ошибки , или чегото такого.
Помогите пожайлуста разобраться :( |
Ответ: Лабиринт с шариком внутри ( проблемка)
В коде несколько ошибок, но не из-за них не работает. Коллизии блитца не позволяют таким образом воздействовать стенками лабиринта на шарик, чтобы он поворачивался вместе с лабиринтом, это была бы IK. Ты можешь двигать шарик и все будет работать пока лабиринт стоит на месте. Самый простой вариант, мне кажется(с), двигать камеру, свет и вектор притяжения шара вместе, оставив неподвижным лабиринт. Т.е. сделать иллюзию что вращаешь головоломку а на самом деле вращаешь Землю, Солнце и игрока.
|
Re: Лабиринт с шариком внутри ( проблемка)
FrankH ,спасибо тебе ;)
Я туту подумал , можно создать некий куб вытянутый . как палку , на его конце шар и этот куб крутить вместе с камерой так чтобы шар описывал круг вокруг лабиринта когда крутиться куб ( куб и шар зделать парентами , ну наверно ). И поинтить шар на шар-привязку и двигать с какимто кооефициентом Гравитации =) Вот и все... Вот токо как привязать , шар-пивот к палке-оси , перенты подойдут? :rolleyes: |
Ответ: Лабиринт с шариком внутри ( проблемка)
Код:
Graphics3D 640,480 |
Re: Лабиринт с шариком внутри ( проблемка)
Огромное тебе человеческое спасибо.... ;)
Я бы наверно через неделю догадался бы все зделать парентами , чтобы "гравитационный куб" крутился вместе с лабиринтом и светом :wild: |
Re: Лабиринт с шариком внутри ( проблемка)
Эммм , после компиляции родными средствами блица, ну встроенным компилятором... и отправки на другой комп мне выдало Unable to set graphics mode
, а на еще другом компе тоже самое . А типерь вниманийе фапрос! Откуда оно береться и чем нужно компилировать чтоб от этой бяки избавиться , мне ее потом в школу нести на флешке ;) З.Ы. Не думайте что это готовая версия которую я отнесу в школу , я еще введу кучу всего интересного. Я просто говорю в общем смысле , что после всех доработок я отнесу игру к коммисии МАН работ :ok: |
Ответ: Лабиринт с шариком внутри ( проблемка)
Unable to set graphics mode - невозможно установить графический режим, например разрешение, разрядность или оконный режим. Никто за тебя учить язык не будет.
|
Ответ: Лабиринт с шариком внутри ( проблемка)
Вложений: 1
FrankH,
Цитата:
З.Ы. блятцовые коллизии - та ещё жопа, их надо избегать всеми возможными способами... всегда надо либо математикой делать, либо физ.двигом в данном случае явно математикой лучше всего и быстрее коллизий и не надо многомегабайтовые либы подключать только с математикой в данном случае возиться долго... с другой стороны если это лаба в школу то если сделаешь алгебраическим методом, то (to klopmaks) сможешь долго рассказывать на уроке умные вещи о том как ты организовал движение шарика, все будут смотреть и думать "ни фига се, моск!" , так что тут уж сам решай что важнее - быстрота написания или умный вид при демонстрации klopmaks, Цитата:
Пользуясь терминологией тов. Михеева, ГАФ! ![]() |
Ответ: Лабиринт с шариком внутри ( проблемка)
Цитата:
|
Ответ: Лабиринт с шариком внутри ( проблемка)
По-хорошему надо упдейтать конкретно 1 только шар. Но блин, так устроен блитз, что обновить можно либо всё, либо ничего (как вариант - группами).
|
Re: Лабиринт с шариком внутри ( проблемка)
2 frankH Первое место на районной олимпиаде по английскому йазыку среди 8-ЫХ класов г.Киева ;)
G# = -9.8*0.000002 ; По закону тов. Ньютона... Давно? откуда 0.2 взялось? Else VY = VY + G*dt End If Модешь обьяснить плз этот кусок и зачем нужен dt? 2 АВТОМАТ ща попробуем фкурить =,, |
Ответ: Лабиринт с шариком внутри ( проблемка)
0.2 - аналог массы
dt - синхронизация |
Ответ: Re: Лабиринт с шариком внутри ( проблемка)
Цитата:
Старая аватарка мне больше нравилась) |
Ответ: Лабиринт с шариком внутри ( проблемка)
Не чётко прочёл всю тему, наверное уже говорили..
Коллизия в блице весьма странно устроена, прдположим такую ситуацию: есть объект динамичный (тот же шарик), и есть статичный уровень. Если между двумя тактами, перемещение шарика будет с одной стороны сразу на другую сторону фуйса лабиринта, то в проверке коллизии, как я понимаю будет проверка на весь путь, так сказать будет столько шагов проверки, сколько длина всего "пути / (примерно радиус сферы для фруструма)", таким образом объект не сможет проскочить, т.к. в одном из проходов наткнётся на стенку. Теория может быть ошибочна, но на практике всё упирается именно в подобное. Далее, если уровень станет динамичным, а кручение не есть перемещение, то в один из тактов позиция одного из предпологаемых трианглов, с которым должно было произойти столкновение, проскочит тот кусочек, что даст возможность в один шаг объекту уже стать на другой стороне фейса. Но тут возникает моммент, к примеру если есть проходы, то по идее изменение окружения тоже должно быть по проходам, и теперь представим что всё будет вот так по проходам проверятся - комп умрёт. Поэтому эта теория, учитывая данный факт, весьма шатка и не убедительна. Короче говоря, в моммент между двумя проходами проверки на коллизию, фейс крутящегося объекта проскочил. Кстати в PhysX и любом другом физическом движке будет также. Но в PhysX есть CCD (Continuous Collision Detection), эта функция включает какраз вот эту проходную проверку, при этом регулировать шаг тоже можно, но тут возникает моммент какраз который Очень сильно затормозит просчёт. Для одного шарика - думаю будет не сильно и тормозно, но не переусердствуйте с параметром проходности (если всёже юзать PhysX и эту функцию). Варианты решения проблеммы: - Увеличение размера коллизии шарика (не обязательно, но соответственно и визуальный шарик придётся увеличить) - Ограничение скорости перемещения шарика. Скорость не должна превышать радиуса шарика, между двумя просчётами коллизии, с учётом встречной скорости перемещения трианглов лабиринта. - Исползование CCD функционала в PhysX. - Фиксировать по времени частость вызова функции просчёта физики. Можно и совместить все 3 предложенных варрианта, а можно использовать один из них, но второй будет обязательным, но без третьего или жёсткого выполнения второго предложения, проскок всёравно реален. Четвёртый пункт обязателен без каких либо вопросов. |
Re: Лабиринт с шариком внутри ( проблемка)
FrankH, мне тоже иногда спать хочеться , кстати я чет давно ФМА не смотрел =)))
MoKa, спасибо =) . А физикс тяжело подключить???? =) И где его вобще взять? Можнтн подкинуть какую нибуть инструкцию. |
Ответ: Лабиринт с шариком внутри ( проблемка)
MoKa, на самом деле шаг один. Просто проверяется коллизия не шара в текущем месте, а отрезка. из начальной точки в конечную.
klopmaks, www.rubux.net |
Ответ: Лабиринт с шариком внутри ( проблемка)
HolyDel, могу поспорить, т.к. ведь если на пути отрезка который будет из центра, не будет проходить трианглы, а будут только где-то объект задевать, то и позиция изменится, или проверка лучами происходит из каждой вершины, но опять же будут глюки, с острыми или маленькими объектами. Не соглашусь насчёт отрезка, и откуда такая информация?
|
Ответ: Лабиринт с шариком внутри ( проблемка)
отрезок толстый. даже не отрезок а капсула.
откуда? ну.. чисто аналитически получается так. потомучто хоть ты объект здинеш на 1, хоть на 1000, время обработки будет одинаковым. Значит никак не циклом с мелкими шагами. По крайней мере стандартная блицовая коллизия. |
Ответ: Лабиринт с шариком внутри ( проблемка)
Хм, это с элипсоидом, а с кубом?
Эх.. |
Re: Лабиринт с шариком внутри ( проблемка)
Коллизию в блице не раз проклинал поначалу, тоже уже начал прикручивать ньютон, пока не понял, что туплю сам.
Коллизия бывало не обсчитывалась и ентитя порваливалась. Особенно заметно если треугольники в мешах ландшафта больших размеров и угол перехода крутой, те резковато вверх поднимается гора к примеру. Но проблема в том , что надо задавать второй радиус ентите и все начинает работать нормально. К коллизии блитца никаких претензий. EntityRadius ball,1,2 к примеру (второй радиус подбирайте, чем больше размер треугольников тем больше радиус). Можно передвигать ентитю и на большое расстояние чем ее радиус, блитц все рассчитает нормально. Так что проблема не в блитце ... А в данном случае FrankH правильно описал главную проблему. Да и лабиринт все таки я бы поаккуратнее сделал. Ни к чему там эти нестыковки между стенками. Пользуйся Snaps Toggle в максе и тогда не надо будет такой лабиринт из такого количества кусочков собирать. Вы поэтому, я так понял, и маштаб лабиринта уменьшили, что проваливалась сфера ? Просто у Вас 3 дыры размером около 3 юнитов, что позволяет проваливаться сфере радиусом 1. |
Часовой пояс GMT +4, время: 22:29. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot