Войти
IrrlichtФорум

IrrLicht (для новичков) - тупые вопросы (30 стр)

Страницы: 129 30 31 3236 Следующая »
#435
0:36, 16 авг 2010

Нарыл ответ на форумах, и чуть переделал функцию. Выглядит теперь так:

void rotateNodeToTarget(IAnimatedMeshSceneNode *node, IAnimatedMeshSceneNode *target)
{
    vector3df diff = node->getPosition() - target->getPosition();
    node->setRotation(diff.getHorizontalAngle());
    node->updateAbsolutePosition();
}
#436
1:05, 16 авг 2010

Я бы вместо нодов в параметры передавал сразу их позиции :)
Просто передавать целый объект в метод ради одного поля не очень хорошо.

#437
1:53, 16 авг 2010

Ну пардон, передаётся не объект, а указатель на него. А это всего 4 байта =)

#438
1:58, 16 авг 2010

Мне нужно удалить нод, когда он достигнет конечной точки.
Как можно забиндить каллбэк на окончание передвижения? Или может можно как-то вообще без каллбэка поставить опцию, чтобы по окончанию он удалялся?

#439
10:09, 16 авг 2010

Если пользуешься аниматором, то у него есть свойство isFinished. Ставь в условие и удаляй.

#440
12:56, 16 авг 2010

Так что, мне постоянно в цикле этот isFinished проверять? Иначе низзя?

#441
13:22, 16 авг 2010

можно
написать свой аниматор оттолкнувшись от CSceneNodeAnimatorDelete
заменив проверку времени на проверку isFinished
и далее добавлять его к ноду в начале движения

#442
14:36, 16 авг 2010

А в какую сторону копать по поводу отслеживания коллизии двух моделей?

#443
16:30, 16 авг 2010

В сторону примера 07.Collision.

Я сам до конца не понимал как работает столкновение в иррлихте пока не изучил внимательно тот пример.

Если конкретней по твоей теме, то надо создать селектор из BB каждой модели методом createTriangleSelectorFromBoundingBox. И все селекторы запихать в метаселектор. А потом этот метаселектор передать аниматору.

#444
12:11, 17 авг 2010

Побился пол-дня над этим - и добился только того, что фигурка падает сквозь пол и улетает вниз далеко-далеко =))
Может кто-нибудь объяснить как-нибудь на пальцах принцип обнаружения коллизий в ирлихте? Я так понимаю, что ноды подразделяются на мелкие треугольники, и при столкновении какого-то треугольника одного нода с треугольником другого нода происходит коллизия. Или я понял неправильно? =)
И можно какой-нибудь пошаговый алгоритм, как организовать реакцию на коллизию двух мешей? Или какой-то набросок кода? На практике мне просто легче разобраться будет =)
Есть, конечно, пример 07. Collision, но там отслеживаются коллизии с ландшафтом, и я не совсем улавливаю связь.

#445
12:52, 17 авг 2010

если у тебя плоский мир, то не проще было фиксировать одну ось ноды фигурки между getPosition и setPosition ?

#446
13:08, 17 авг 2010

Я в идеале хочу сделать так, чтобы при соприкосновении одной фигурки с другой вызывалась callback функция. Если не ошибаюсь, то в аниматоре коллизий есть такая фича. Только мне бы научиться с этим работать. У меня пока опыта слишком мало, чтобы самому во всём разобраться =)

#447
14:10, 17 авг 2010

Столкновение двух моделей.

scene::ITriangleSelector* faerieSelector = 0;
scene::ITriangleSelector* dwarfSelector = 0;
scene::IMetaTriangleSelector* metaselector = 0;
scene::ISceneNodeAnimator* CollisionAnimator = 0;

scene::IAnimatedMeshSceneNode* faerieNode = smgr->addAnimatedMeshSceneNode(smgr->getMesh("faerie.md2"));
if(faerieNode)
{
   faerieSelector  = smgr->createTriangleSelectorFromBoundingBox(faerieNode);
   faerieNode->setTriangleSelector(faerieSelector );
   metaselector->addTriangleSelector( faerieSelector);
   faerieSelector->drop();
}

scene::IAnimatedMeshSceneNode* dwarfNode = smgr->addAnimatedMeshSceneNode(smgr->getMesh("dwarf.x"));
if(dwarfNode)
{
   dwarfSelector  = smgr->createTriangleSelectorFromBoundingBox(dwarfNode);
   dwarfNode->setTriangleSelector(dwarfSelector);
   metaselector->addTriangleSelector( dwarfSelector);
   dwarfSelector->drop();
}

if(metaselector)
{
   CollisionAnimator = smgr->createCollisionResponseAnimator(metaselector, faerieNode);
   faerieNode->addAnimator(CollisionAnimator);

   CollisionAnimator = smgr->createCollisionResponseAnimator(metaselector, dwarfNode);
   dwarfNode->addAnimator(CollisionAnimator);

   metaselector->drop();
   anim->drop(); 
}
#448
14:29, 17 авг 2010

А для того, чтобы модели не проваливались сквозь пол, нужно ещё и колизию моделей с полом сделать, я так понимаю?

#449
18:35, 17 авг 2010

Решил нулевой гравитацией

Страницы: 129 30 31 3236 Следующая »
IrrlichtФорум

Тема в архиве.