Войти
ПрограммированиеФорумФизика

Тетрис на PhysX

Advanced: Тема повышенной сложности или важная.

#0
0:28, 15 мар. 2007

Изображение
Изображение
Изображение
Изображение

Не пойму как правильно заставить распадаться фигурки на боксы.

Пока что делаю так:

NxBoxShapeDesc BoxShapes[4];
for(gwUInt j = 0; j < Blocks[i].Boxes.GetNum(); ++j)
{
  Blocks[i].Boxes[j].BoxShape->saveToDesc(BoxShapes[j]);
  Boxes.Add(Blocks[i].Boxes[j]);
}
Blocks[i].Release();
Blocks.Delete(i);
for(gwUInt j = 0; j < 4/*BoxShapes.GetNum()*/; ++j)
{
  gwUInt k = Boxes.GetNum()-1-(4/*BoxShapes.GetNum()*/-1)+j;
  Boxes[k].BoxActor = Engine->PhysicsEngine->CreateBox(GW_ZERO_VECTOR/*gwVector(0.0f, 2.0f * Height, 0.0f)*/, BoxShapes[j], Density, (gwVoid *)k);
  Boxes[k].BoxShape = Boxes[k].BoxActor->getShapes()[0]->isBox();
}

т.е. тупо сохраняю шейпы актора фигурки и из них создаю четыре актора боксов (предварительно зарелизив актор фигурки), из-за чего в эти моменты подтормаживает и разлетаются боксы очень сильно... :-(
Может как то можно это сделать, не пересоздавая акторы? Разделить один актор на 4 возможно?..

Как это (распад одного обьекта на несколько частей) грамотно реализовать в PhysX'е?

Изображение
Изображение
Изображение


#1
15:20, 15 мар. 2007

Неужели никто ничего не подскажет?.. :-(

#2
16:39, 15 мар. 2007

Боксы соединённые джоинтами, а при распаде просто убивать джоинты?

#3
17:21, 15 мар. 2007

vap
Гм, пожалуй вариант... Просто я джоинты еще не юзал (не хотел все усложнять), какие посоветуешь?..
А то их много всяких...

#4
17:46, 15 мар. 2007

Для таких целей только NxFixedJoint. А то как его разорвать методов хватает.
Через шейпы сложно. Я делал ф-ю для копирования тел, дак её можно юзать для выкопирования одного шейпа в новое тело.

#5
21:06, 15 мар. 2007

Render
Гм, и как же разорвать NxFixedJoint?..
Разве что через setBreakable...

Ладно, спасибо всем, буду пробовать :)

#6
17:54, 28 мар. 2007

См PhysX SDK help, Lesson 411 - Fragmenting Objects
Там всё написано

#7
17:11, 30 мар. 2007

А зачем тебе что-то разрывать? Просто создай из одного бокса (например длинного) несколько (например два кубика). И всё будет корректно работать.

ПрограммированиеФорумФизика

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