НаноБот 735 Опубликовано 24 Января 2015 (изменено) Пост к вот этому: http://www.amk-team.ru/forum/index.php?showtopic=13078&p=893616 просто слегка перекидываю кой-чего кое-куда. dc Странный стиль программирования, т.е. форматирования, моск слегка зависает когда видишь несколько end-ов в одной строке. В общем, жизнь показала что алгоритм удара, в оригинальном скрипте в принципе инвалидный и глючный, заменил своим из скрипта "гранаты с УДЗ", работает без ошибок и быстрей. function track_item(delta) local item = thrown_id and lobj_by_id( thrown_id ) local pos, ps if item then pos = item:position() -- if check_on_level( pos ) then if level.get_bounding_volume().min.y < pos.y then ps = item:get_physics_shell() else local obj = sim:object( thrown_id ) -- улетел за пределы уровня, удаляем if obj then sim:release( obj, true ) end end end if ps and ( thrown_upd >= global_time_ms ) then -- v_lin, v_ang = vector(), vector() -- странное и загадочное, но иначе не работает ps:get_linear_vel(v_lin) if not lv_lin or (throw_time and time_global() < throw_time + 200) then -- предохранитель lv_lin = vector():set(v_lin) --, vector():set( v_ang ) return end -- ловим ускорения (отрицательное) local vel = vector() vel.x = v_lin.x - lv_lin.x vel.y = v_lin.y - lv_lin.y vel.z = v_lin.z - lv_lin.z -- так быстрей local acc = vel:magnitude()/(delta * 0.001) --log("скорость предмета-("..lvel_mag..")ускорение-("..acc..")ID-("..id..")time-("..time_global()..")") if acc > udar then -- основной показатель удара - динамическое ускорение (торможение) local sect = item:section() if string_find( sect, "explosive" ) then item:explode() elseif t_af[sect] then af_activate( sect, thrown_id ) end -- все, упали else lv_lin:set( v_lin )--; lv_ang:set( v_ang ) return -- продолжаем лететь end end thrown_id, thrown_upd = false, 0 lv_lin = false end Главное можно силу удара регулировать, а то ветка, и арт или СВУ срабатывают, так же если в верх выстрелить, то в верхней точки так же иногда срабатывает. Странно что кираг с маландринусом до такого просто алгоритма не додумались. Ах да, там не сколько не обычное вычисление разницы векторов, странно но так гораздо быстрей, ну их в болото со своей векторной арифметикой. https://yadi.sk/d/XBIXdIv6eDTNo Не бага, а фича. Они изменение траектории ловят. Но, да, наверное, не нужно. Форматирование - так выделяется "законченный" блок. Когда часто пользуешься - удобнее. P.S. комментарии перенес прямо в этот пост, для компактности. dc Изменено 30 Января 2015 пользователем Dennis_Chikin 1 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение