Инструкция return здесь для чего? Что будет без неё?
ЦитироватьИнструкция return здесь для чего? Что будет без неё?Просто return без возвращаемого значения просто возвращает управление из функции туда, откуда она вызвана.Имеет смысл, если в функции после этой строки есть ещё что-то, но нужно это проигнорировать.Если пустой return находится в конце функции, он, фактически не нужен, без него будет работать точно также (хотя я обычно предпочитаю его ставить)
... ещё один вариант во вложении для обсуждения ...
... приветствую ...... у тебя колеса у колёс установлен тип физического представления No Collision, то есть отключено физическое столкновение и поэтому ничего не происходит ...https://docs.blender.org/manual/ru/dev/game_engine/physics/types/no_collision.html?highlight=collision#no-collision-physics
>> Не возражаешь?... на сколько в курсе, на этом форуме нет каких-либо ограничений на количество задаваемых вопросов ...
vu = vw.cross(dw).normalized()print("74 vu = ", vu, " w1 = ", w1)
obp,point,normal = object.rayCast(w1+2*vu)
... кстати, если у тебя теперь 4 колеса, то можно изменить логику происходящего - не нужно вычислять по отдельности направления луча для определения нахождения следа, поскольку эти лучи перпендикулярны плоскости платформы автомобиля и только выходят из центров колес ...... и условие рисования следа можно упростить, проверив лишь расстояние от центра колеса до точки пересечения луча с землёй, например чтобы оно было не больше 1,05 радиуса колеса ...
import bgefrom mathutils import Vector up = Vector((0,0,1))ls = 0.06r = 0.3up = Vector((0,0,1))sc = bge.logic.getCurrentScene()sl = sc.objectsInactive['sled']car = sc.objects['Car']def init(): bge.logic.getCurrentScene().objects['ground'].collisionCallbacks.append(callback)def callback(object, point, normal): if object.name[0:5]!='wheel': return db = object.attrDict w = object.worldPosition vw = car.getAxisVect(up) vu = vw.normalized() obp,point,normal = object.rayCast(w-2*vu) if obp: v1 = point if not 'v0' in db: db['v0'] = v1 return if (w-v1).length<1.05*r: v0 = db['v0'] while (v1-v0).length>=ls: dv = (v1-v0) ob = sc.addObject(sl) ob.worldPosition = v0+vu*0.03 ob.alignAxisToVect(vw,2,1) ob.alignAxisToVect(normal,2,1) ob.alignAxisToVect(dv,0,1) v0=v0+dv.normalized()*ls db['v0'] = v0
... например так, только следы будут накладываться друг на друга ...Код: python.... if object.name[0:5]!='wheel':
.... if object.name[0:5]!='wheel':
Кодif (w-v1).length<1.05*r:
if (w-v1).length<1.05*r:
if object.name[0:5]!='wheel':
что это в квадратных скобках, где можно прочитать?
Цитироватьif object.name[0:5]!='wheel':Цитироватьчто это в квадратных скобках, где можно прочитать?от строкового поля object.name взяты первые 5 символов (с 0-го по 4-й).