import bgefrom mathutils import Vector v0 = Noneup = Vector((0,0,1))ls = 0.4sc = bge.logic.getCurrentScene()sl = sc.objectsInactive['sled']def init(): bge.logic.getCurrentScene().objects['ground'].collisionCallbacks.append(callback) def callback(object, point, normal): global v0 v1 = object.worldPosition if v0 is None: v0 = v1.copy() else: while((v1-v0).length>ls): v0 += (v1-v0).normalized()*ls ob = sc.addObject(sl) vW = object.getAxisVect(up) ob.alignAxisToVect(vW,0,1) vS = ob.getAxisVect(up) ob.worldPosition = v0 obp,point,normal = ob.rayCast(v0-vS*2) if obp: ob.worldPosition = point+vS*0.03 ob.alignAxisToVect(normal,2,1)
v0 = v0+dv*ls или если красивее, то v0+=dv*ls , что означает прибавить к вектору v0 вектор dv*ls , где dv*ls это произведение вектора на число (по сути умножение элементов вектора на одно и тоже число) ...dv/=dv.length - означает деление вектора dv на число (длину самого вектора, по идее нормализация) ...dv = v1-v0 никак не является расстоянием между точками, поскольку это вектор разности между точками, а вот длина этого вектора dv и есть расстояние ...http://blender-3d.ru/forum/index.php/topic,326.msg4308.html#msg4308while((v1-v0).length>ls): # пока расстояние между точками больше длины следа
Строка 14 – global v0, ls почему назначение глобальными переменных производится здесь а не в 5-7 строках, не в блоке init?[/color] - это не назначение, а указание что в указанном цепочке кода эти переменных нужно считать глобальными
>> Строка 9: def init(): - побуждается контроллером в ответ на сенсор «Всегда». Тут наверно вопрос по работе BGE. Как я понимаю, BGE систематически обновляет кадр. Отсюда сенсор «Всегда», так же покадрово должен возбуждать контроллер и соответственно часть модуля def init():. Однако ранее где-то ты утверждал, что эта часть модуля работает единожды. Что-то тут не вяжется. Попытайся понятнее изложить свою мысль.... моя мысль такая - мне нужно инициализировать переменные, для этого в начале работы требуется запустить эту процедуру, без разницы каким способом, главное один раз при старте ...... можешь сделать это любым другим доступным способом ...
>> первую очередь у тебя родился алгоритм, а уж потом подобрался код... несколько раз спрашивал тебя о наличии алгоритма, ведь для него не требуется код, это же абстракция ...
>> Ну что мешает его вписать в код в качестве комментариев? Банальная лень? >> код красив, следовательно, и красив алгоритм.... это нарушает красоту кода, да-да, мне не нравятся комментарии, поскольку код становится не читаемым, чем меньше текста, тем легче код для понимания ...
>> А если твой блок применят там, где сбой в нём сможет убить или причинить огромный экономический ущерб?... насколько в курсе, то у нас здесь форум, а не служба технической поддержки, то есть живое человеческое общение ...... по большому счёту и если мне не изменяет память здесь нет профессиональных программистов, которые зарабатывают себе кодом на хлеб, поэтому приветствуется конструктивный диалог по типу "делают вот так, не получается вот это, в чём может быть проблема" ...
... насколько в курсе, то у нас здесь форум, а не служба технической поддержки, то есть живое человеческое общение ...... по большому счёту и если мне не изменяет память здесь нет профессиональных программистов, которые зарабатывают себе кодом на хлеб, поэтому приветствуется конструктивный диалог по типу "делают вот так, не получается вот это, в чём может быть проблема" ...
... так ты лирик или технолог? в целом это хорошая идея сделать форум человечнее и дружелюбнее, возьмись за разработку, организацию этого процесса, разработай технологию гуманного вспоможения новичкам, обучи волонтёров форума этой позитивной практике ...... можно на тебя рассчитывать в этом деле? ...
... а как в целом поступать в тех случаях когда колесо отрывается от земли? например трамплин, есть рассуждения по этому поводу или алгоритм? ...
>> Так последний след в месте отрыва, затем нет никаких следов в полёте, и вновь в первом месте касания. А, как ещё? По-моему, только так.... как узнать место отрыва? ...
... допустим вызов прекратиться, навсегда? и как его прекращение влияет на определение места отрыва? ...
... как узнать математически находилось ли колесо в воздухе между двумя точками, которые получены в результате обработки коллизий? ...
... все ответы на вопросы уже были приведены в топике, но это не снимает с меня ответственности за не внятность объяснения, а лишь подчёркивает определённую сложность обсуждаемой темы ...