![]() |
Прибить гвоздями, либо приварить?
Здравствуйте уважаемые блитз девелоперы!
Передомной встала одна очень сильная проблема. Я незнаю как намертово скрепить несколько объектов между собой. Короче есть 2 сферы, вторая привязана к первой, у обоих коллизии с объектами. Допустим та, что сверху врезается во чтото а та, что снизу не во что не врезается. В итоге получается верхняя сфера стоит на месте, а нижняя уезжяет. Так вот как скрепить объекты таким образом, чтобы при застревании одного из них второй какбы тоже застревал. Ну, чтоб они работали как один меш целый. |
Re: Прибить гвоздями, либо приварить?
EntityParent entity, parent[, global]
Parameters entity - entity handle parent - parent entity handle global (optional) - true for the child entity to retain its global position and orientation. Defaults to true. Description Attaches an entity to a parent. Parent may be 0, in which case the entity will have no parent. |
Re: Прибить гвоздями, либо приварить?
EntityParent entity,parent[,global]
Параметры entity - указатель объекта parent - объект, к которому будет привязка (родительский) global (не обязательно) - true - чтобы сохранить глобальную позицию и ориентацию привязанного объекта (по умолчанию). Описание Привязывает один объект к другому. Если значение parent=0, то объект, наоборот, отвязывается от других объектов и становится самостоятельным. __________________________________________ AddMesh source_mesh,dest_mesh Параметры source_mesh - исходный объект dest_mesh - объект, к которому прикрепляем первый Описание Добавляет исходный объект(mesh) к другому объекту. AddMesh работает лучше всего с объектами, к которым были применены соответствующие команды для работы с mesh-ами. Так, если Вы хотите изменить объект перед добавлением его к другому объекту, удостоверьтесь, что Вы используете ScaleMesh, PositionMesh, PaintMesh и т.д, а не ScaleEntity, PositionEntity, EntityTexture и т.д. Однако, помните, что при использовании команд типа RotateMesh особенность состоит в том, что они работают в глобальных координатах с центром 0,0,0. Поэтому масштабируйте и вращайте mesh перед его позиционированием, иначе ваш объект может оказаться в неожиданных координатах. Кроме того, после использования AddMesh, координаты нового целостного объекта будут установлены в 0,0,0. После использования AddMesh, оригинал source_mesh будет все еще существовать, поэтому используйте FreeEntity, чтобы удалить его, если он больше не нужен. |
Re: Прибить гвоздями, либо приварить?
AddMesh
|
Re: Прибить гвоздями, либо приварить?
AddMesh
EntityRadius задавай оба. Будет очень быстрый фейк. |
Re: Прибить гвоздями, либо приварить?
Позиционируй в цикле объекты относительно того который сместился при коллизии.
|
Re: Прибить гвоздями, либо приварить?
tormoz, увы может не прокатить, потомучто объект может быть смещен в препятствие.
|
Re: Прибить гвоздями, либо приварить?
Открываю девятую банку пива, и смотрю на это всё.
Реально не всё понял. Мне можно пример написать? Ну какраз допустим пример по двум сферам. |
Re: Прибить гвоздями, либо приварить?
Ну примерно так:
car=createsphere() car2=createsphere() positionmesh car2,-0.5,0,0 positionmesh car,0.5,0,0 addmesh car2,car freeentity car2 entityradius car,1.5,1 |
Re: Прибить гвоздями, либо приварить?
Вопщем не работает нифига.
И ещё 1 глюк с коллизией. Если ставлю объекту коллизию с двумя разными объектами Collisions TypeTehnika,TypeEarth,2,3 Collisions TypeTehnika,TypeNebo,2,3 то почемуто TypeTehnika,TypeEarth,2,3 начинает работать как 2,1 а если оставляю коллизию с одни объектом Collisions TypeTehnika,TypeEarth,2,3 то так и коллизится как надо 2,3 чё за баг? |
Re: Прибить гвоздями, либо приварить?
Если никто не скажет мне в чём причины этих багов,
я брошу этот блитц к чёртовой матери. Как ни сяду прогить замечаю - Баг на баге! |
Re: Прибить гвоздями, либо приварить?
Цитата:
причина: Как ни сяду прогить... следствие: Баг на баге! надо что-то менять причину или следствие? это уже зависит от тебя. :tongue: |
Re: Прибить гвоздями, либо приварить?
Говоря баг на баге я говорю о коде без ошибок, в котором происходят баги.
Вопщем написано элементарно, верно и без ошибок, а портаки присутствуют. Восновном в блитце глюки с коллизией. Наверно надо прекручивать физикс... Вот был например простой код, при коллизии с одним объектом менять локацию в игре, при коллизии с другим останавливаться. Так вот при коллизии с первым действительно менялась локация, а при коллизии с вторыи объект останавливался, но! Иногда при коллизии с вторым тоже менялась локация, хотя у всех объектов разные типы, и смена локаций при коллизии со вторым в коде вообще нигде не прописана. Вот такие портаки. Щас вот происходит фантастический глюк описаный в 10 посте. |
Re: Прибить гвоздями, либо приварить?
Blitzerg, если код без ошибок это означает что у кодера руки не от "туда".
|
Re: Прибить гвоздями, либо приварить?
Вот тока мока ненадо меня криворуким обзывать ладно?
Код и сам перепроверял, и другие. Всё верно написано, но баги вылазят. Меня эта коллизия добивает... Вот ты сам мне скажи как функция может делать то, что в ней вообще не прописано? А хрен его знает как.. Вот это и есть баг. |
Re: Прибить гвоздями, либо приварить?
любой баг надо начать с симуляции его на стрес-тестовой программе
именно она показывает где баг - за тестовой прогой или в тестовой проге если баг появляется за тестовой прогой - обращайся к разработчику ПО если в тестовой проге - это не баг, просто надо правильно писать по скольку блиц уже скока лет существует, и ранее таких проблем не замечалось .. то скорее виноват сам программист который не верит в свои ошибки ... ps. нужно только анализировать ... |
Re: Прибить гвоздями, либо приварить?
Вот специально копировал части кода из функций с которыми баг из поста 10.
Код:
Const TypeTehnika=1,TypeEarth=2,TypeNebo=3 почему: Collisions TypeTehnika,TypeEarth,2,3 работает как Collisions TypeTehnika,TypeEarth,2,1 |
Re: Прибить гвоздями, либо приварить?
Цитата:
Ты поставил скользящую коллизию, а она работает на останов ? Чудес не бывает, бывают кривые руки и недостаток мозгов (без обид, я сам тормоз) Код управления движением объектов в студию. А лучше тест с моделями (повтори так называемый "баг" с минимумом кода) |
Re: Прибить гвоздями, либо приварить?
Collisions TypeTehnika,TypeEarth,2,3
Collisions TypeTehnika,TypeNebo,2,3 вынеси из цикла. это значит раз. далее, вот ненадо к блицевским плейнам делать коллизию 2-ого типа (сфера к полигону), как эти самые плейны реализованы фиг знает, поетому ненадо. или сделай EntityBox у ним, и коллизию тогда t1,t2,3,3 |
Re: Прибить гвоздями, либо приварить?
Ну так как проблемы с коллизией я только у корабля пока заметил, постарался сделать пример касающийся только его, и его коллизии без лишних функций управления и тд.
Вопщем вставляйте код в свой блитц, и используйте свою медию, пофигу какие текстуры, а вместо корабля пусть хоть тролейбус будет. Заметите, что корабль в земле застревает, когда должен скользить. Примечание: Q - загрузить небо, землю, камеру, функцию управления корабля (больше 1 раза не нажимайте! ато создадите клоны - земли, корабля, камеры и выключите управление) управление кораблём: W A S D UP DOWN LEFT RIGHT - 8 клавиш, так надо, как запустите осваивайтесь в управлении сразу всеми восмью. Тут и мышкой можно, но не нужно ) Код:
Graphics3D 1024, 768, 32 т.е. если смотреть по воображаемому компосу: при полёте на север застревает, при полёте на юг не застревает. Добавил: если у неба коллизию убрать, тоесть стереть строчку Collisions TypeTehnika,TypeNebo,2,3 то баг с застряванием в земле пропадает. |
Re: Прибить гвоздями, либо приварить?
Коллизии со сферами прекрасно работают, 3 работает как 1 скорей всего потому, что... так и предусмотрено... какбы защита от слольжения, лично я никогда не использую 3, всегда 2.
Ну а с привязкой... если использовать EntityParent - это не значит, что объекты намертво прям привязаны. AddMesh тут правильно советуют. |
Re: Прибить гвоздями, либо приварить?
Эддмеш эффекта не дал.
Как это предусмотрено? Это баг. |
Re: Прибить гвоздями, либо приварить?
Код:
Graphics3D 800, 600, 32 месаги о том что все глючит кроме тебя, а то уже бесит |
Re: Прибить гвоздями, либо приварить?
Цитата:
|
Re: Прибить гвоздями, либо приварить?
Цитата:
Я сказал медию заменить а не кубы генирировать. Кубы и у меня не застревают, а загружаемый меш при такой коллизии при полёте на север застревает, при полёте на юг нет. Берёш мой код, ставиш свои текстуры, и свою b3d модель. |
Re: Прибить гвоздями, либо приварить?
|
Re: Прибить гвоздями, либо приварить?
Цитата:
И у тебя их нет - есть кривые руки и дурная голова :wallbash: Тебе нужно решение твоей ошибки - выкладывай пример с медией. нехер нам делать, решать твои проблемы подбором медиа. Еще раз для бестолковых: в Блитце бага нет, он исключительно в неправильном коде |
Re: Прибить гвоздями, либо приварить?
Ппц где здесь код неправильный?
Щас выложу с медией... Добавил: Вот вам с медией bb файл. http://ifolder.ru/3932722 Если вы найдёте ошибку в коде влеяющую на коллизию, то вам блин за это булочную награду выдать надо будет. И не говорите, что бага нету! Я проверял на обоих моих компах, и на одном в институте! Лично я вижу в этом баг плейнов блитца, модель помещённая между двух плейнов неправильно об них коллизится. |
Re: Прибить гвоздями, либо приварить?
Цитата:
ставил коллизию куда токо можно, эффект одинаковый. |
Re: Прибить гвоздями, либо приварить?
Blitzerg
ну и твой пример работает нормально ... ы ? без разницы загружать модель или создавать куб |
Re: Прибить гвоздями, либо приварить?
|
Re: Прибить гвоздями, либо приварить?
Цитата:
Я даже поцану знакомому слал, он меня первый спросил почему застревает! Я лично на трёх компах проверил, застревает везде! Вы пробовали там чтоли кораблём лететь в другую сторону взлетать и снижаться врезаться, рулить там в разные стороны? Ато он то застревает то нет. |
Часовой пояс GMT +4, время: 03:59. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot